{"Document":{"ObjectName":"Scenario::ScenarioDocumentModel","id":1,"BaseScenario":{"ObjectName":"Scenario::BaseScenario","id":0,"Constraint":{"ObjectName":"Scenario::IntervalModel","id":0,"Metadata":{"ScriptingName":"tracking-to-midi","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Inlet":{"uuid":"a1574bb0-cbd4-4c7d-9417-0c25cfd1187b","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Audio In","Exposed":"audio in"},"Outlet":{"uuid":"a1d97535-18ac-444a-8417-0cbc1692d897","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Audio Out","Exposed":"audio out","Address":"audio:/out/main","GainInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10000,"Hidden":false,"Custom":"Gain","Exposed":"gain","Value":{},"Init":{},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},"PanInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10001,"Hidden":false,"Custom":"Pan","Exposed":"pan","Value":{},"Init":{},"Domain":{}},"Gain":1.0,"Pan":[1.0,1.0],"Propagate":true},"Processes":[{"uuid":"f8e7d6c5-b4a3-4291-8c0d-1e2f3a4b5c6d","ObjectName":"pose_detector","id":2,"Metadata":{"ScriptingName":"RetinaFace 5-kpt","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[-51.90999999999997,-36.64099999999996],"Size":[319.0,236.5],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"In","Exposed":"in","Address":"Camera:/","Format":0,"Filter":2,"AddressMode":1},{"uuid":"40833147-4c42-4b8b-bb80-0b1d15dae129","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Landmark Model","Exposed":"landmark model","Value":{"String":"<LIBRARY>:packages/pose-detector/detectors/det-face-retinaface-mobile.onnx"},"Init":{"String":""},"Domain":{},"Filters":"*.onnx"},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Workflow","Exposed":"workflow","Description":"Pose estimation model type","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1,2,3,4,5,6,7,8,9,10,11,12]}},"Values":[["Auto",{"Int":0}],["BlazePose",{"Int":1}],["RTMPose_COCO",{"Int":2}],["RTMPose_Whole",{"Int":3}],["ViTPose",{"Int":4}],["YOLOPose",{"Int":5}],["AnimalPose",{"Int":6}],["MediaPipeHands",{"Int":7}],["FaceMesh",{"Int":8}],["BlazeFace",{"Int":9}],["MobileFaceNet",{"Int":10}],["RTMPoseFace",{"Int":11}],["BoxDetection",{"Int":12}]],"FolderPort":"","FileExtensions":""},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"Output Mode","Exposed":"output mode","Description":"Visualization output mode","Value":{"String":"SkeletonOnImage"},"Init":{"String":"SkeletonOnImage"},"Domain":{"String":{"Values":["SkeletonOnImage","SkeletonOnly"]}},"Values":["SkeletonOnImage","SkeletonOnly"],"Pixmaps":[]},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":4,"Hidden":true,"Custom":"Min Confidence","Exposed":"min confidence","Description":"Detection / keypoint acceptance threshold: instances and joints below this score are dropped. Also gates which instances get tracked.","Value":{"Float":0.30000001192092896},"Init":{"Float":0.30000001192092896},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":5,"Hidden":true,"Custom":"Draw Skeleton","Exposed":"draw skeleton","Description":"Draw the skeleton bone lines connecting the keypoints.","Value":{"Bool":true},"Init":{"Bool":false},"Domain":{"Bool":null}},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":6,"Hidden":true,"Custom":"Data Format","Exposed":"data format","Description":"Layout of the Geometry outlets, for GPU rendering: flat keypoint arrays, bone lines, the detection bounding box (XYWH / X1Y1X2Y2, normalized [0,1]), or Flattened — the full per-instance record (ids + box + keypoints). Geometry carries the primary detection, Poses Geometry one slot per tracked instance.","Value":{"String":"XYArray"},"Init":{"String":"Raw"},"Domain":{"String":{"Values":["Raw","XYArray","XYZArray","LineArray","WorldXYZArray","BoxXYWH","BoxX1Y1X2Y2","Flattened"]}},"Values":["Raw","XYArray","XYZArray","LineArray","WorldXYZArray","BoxXYWH","BoxX1Y1X2Y2","Flattened"],"Pixmaps":[]},{"uuid":"40833147-4c42-4b8b-bb80-0b1d15dae129","ObjectName":"Inlet","id":7,"Hidden":true,"Custom":"Detection Model","Exposed":"detection model","Value":{"String":""},"Init":{"String":""},"Domain":{},"Filters":"*.onnx"},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":8,"Hidden":true,"Custom":"Track ROI","Exposed":"track roi","Description":"Two-stage only: derive the ROI from the previous frame's landmarks and skip the detector (faster + steadier, like MediaPipe). Experimental — feedback can drift on some models; off by default.","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":9,"Hidden":true,"Custom":"Smoothing","Exposed":"smoothing","Description":"Temporal One-Euro smoothing of keypoints","Value":{"Bool":true},"Init":{"Bool":false},"Domain":{"Bool":null}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":10,"Hidden":true,"Custom":"Smoothing Amount","Exposed":"smoothing amount","Description":"0 = responsive, 1 = very smooth","Value":{"Float":0.5},"Init":{"Float":0.5},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":11,"Hidden":true,"Custom":"Track IDs","Exposed":"track ids","Description":"Track every person/hand/face across frames and emit them all with a persistent ID + stable per-ID color (ByteTrack: Kalman + two-stage + OKS). Enables multi-instance output. Requires a Detection Model.","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":12,"Hidden":true,"Custom":"Max Instances","Exposed":"max instances","Description":"Max simultaneous tracked instances (top-K by score). Track IDs only.","Value":{"Int":5},"Init":{"Int":5},"Domain":{"Int":{"Min":1,"Max":16}}},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":13,"Hidden":true,"Custom":"Detector Cadence","Exposed":"detector cadence","Description":"Track ROI: re-run the detector every N frames; reuse per-track ROIs in between (1 = detect every frame). Track IDs + Track ROI only.","Value":{"Int":4},"Init":{"Int":4},"Domain":{"Int":{"Min":1,"Max":30}}},{"uuid":"40833147-4c42-4b8b-bb80-0b1d15dae129","ObjectName":"Inlet","id":14,"Hidden":true,"Custom":"Re-ID Model","Exposed":"re-id model","Value":{"String":""},"Init":{"String":""},"Domain":{},"Filters":"*.onnx"},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":15,"Hidden":true,"Custom":"Re-ID","Exposed":"re-id","Description":"Blend an appearance embedding (any ReID model in the Re-ID Model port) into tracking so IDs survive long occlusion / re-entry. Track IDs only.","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":16,"Hidden":true,"Custom":"Re-ID Weight","Exposed":"re-id weight","Description":"How strongly appearance influences association.","Value":{"Float":0.25},"Init":{"Float":0.25},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":17,"Hidden":true,"Custom":"Re-ID Preprocess","Exposed":"re-id preprocess","Description":"Input normalization for the Re-ID model (not inferable from the graph). Auto guesses from input size.","Value":{"String":"Auto"},"Init":{"String":"Auto"},"Domain":{"String":{"Values":["Auto","ImageNetRGB","RawBGR","RawRGB","ZeroOneRGB","ArcFaceRGB"]}},"Values":["Auto","ImageNetRGB","RawBGR","RawRGB","ZeroOneRGB","ArcFaceRGB"],"Pixmaps":[]},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":18,"Hidden":true,"Custom":"Draw Boxes","Exposed":"draw boxes","Description":"Draw each instance's bounding box (always on in Box Detection).","Value":{"Bool":true},"Init":{"Bool":false},"Domain":{"Bool":null}},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":19,"Hidden":true,"Custom":"Detection Class","Exposed":"detection class","Description":"Box Detection: keep only this class id (-1 = all). Multi-class detectors only (COCO ids); ignored by single-class detectors.","Value":{"Int":-1},"Init":{"Int":-1},"Domain":{"Int":{"Min":-1,"Max":90}}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":20,"Hidden":true,"Custom":"Draw Landmarks","Exposed":"draw landmarks","Description":"Draw the keypoint dots (independent of the skeleton lines).","Value":{"Bool":true},"Init":{"Bool":false},"Domain":{"Bool":null}},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":21,"Hidden":true,"Custom":"Motion Gate","Exposed":"motion gate","Description":"Reject an id->detection match that is an implausible jump: None, MaxSpeed (an id can't cross the frame in one step), or Mahalanobis (Kalman gating distance, gap-aware). An appearance/ReID match can still re-acquire across the gate.","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1,2]}},"Values":[["None",{"Int":0}],["MaxSpeed",{"Int":1}],["Mahalanobis",{"Int":2}]],"FolderPort":"","FileExtensions":""},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":22,"Hidden":true,"Custom":"Max Speed","Exposed":"max speed","Description":"MaxSpeed gate budget: max per-frame center move, in units of the track's box size (scaled by how long it was lost). Lower = stricter.","Value":{"Float":2.0},"Init":{"Float":2.0},"Domain":{"Float":{"Min":0.25,"Max":6.0}}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":23,"Hidden":true,"Custom":"Birth Gate","Exposed":"birth gate","Description":"Suppress spurious new ids whose box sits mostly inside an existing tracked person (e.g. a raised arm read as a second person).","Value":{"Bool":true},"Init":{"Bool":false},"Domain":{"Bool":null}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":24,"Hidden":true,"Custom":"Strict Confirmation","Exposed":"strict confirmation","Description":"Delete a tentative id the first frame it fails to re-appear (DeepSORT n_init), so a one-frame detection never persists.","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":25,"Hidden":true,"Custom":"Skeleton","Exposed":"skeleton","Description":"Remap output keypoints (overlay + ports) to a standard skeleton layout. Native = the model's own layout; unsupported (e.g. animal -> human) falls back to Native.","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1,2,3,4,5,6,7,8]}},"Values":[["Native",{"Int":0}],["Coco17",{"Int":1}],["OpenPoseCoco18",{"Int":2}],["OpenPoseBody25",{"Int":3}],["Halpe26",{"Int":4}],["Mpii16",{"Int":5}],["H36m17",{"Int":6}],["Dlib68",{"Int":7}],["Hand21",{"Int":8}]],"FolderPort":"","FileExtensions":""},{"uuid":"40833147-4c42-4b8b-bb80-0b1d15dae129","ObjectName":"Inlet","id":26,"Hidden":true,"Custom":"Class Names File","Exposed":"class names file","Value":{"String":""},"Init":{"String":""},"Domain":{},"Filters":""},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":27,"Hidden":true,"Custom":"Track Memory","Exposed":"track memory","Description":"Track IDs: how many frames a lost track is kept alive (Kalman-coasted) before it is dropped (~ frames-per-second = ~1s at 30). Higher = an id survives longer occlusions but may stick to a stale position.","Value":{"Int":30},"Init":{"Int":30},"Domain":{"Int":{"Min":1,"Max":300}}},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":28,"Hidden":true,"Custom":"Re-ID Memory","Exposed":"re-id memory","Description":"Re-ID: how many frames a DEPARTED person's appearance is remembered so they re-acquire their id when they return to frame (~30-60s at 30 fps). 0 = no long-term gallery. Needs Re-ID on.","Value":{"Int":1800},"Init":{"Int":1800},"Domain":{"Int":{"Min":0,"Max":18000}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":29,"Hidden":true,"Custom":"Re-ID Margin","Exposed":"re-id margin","Description":"Re-ID ambiguity guard: the best remembered identity must beat the second-best by at least this appearance margin before a returning person re-acquires its id. Higher = stricter, avoids swapping near-identical people (same uniform); 0 = off.","Value":{"Float":0.10000000149011612},"Init":{"Float":0.10000000149011612},"Domain":{"Float":{"Min":0.0,"Max":0.5}}},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":30,"Hidden":true,"Custom":"Detection Hold","Exposed":"detection hold","Description":"Keep showing the last detection for up to this many frames after it is momentarily lost (a detector miss or a low-confidence frame) instead of blanking immediately. Bridges 1-2 frame dropouts so poses/boxes stop blinking. Applies to single detections and (as the coast window) to tracked instances. 0 = blank immediately.","Value":{"Int":6},"Init":{"Int":6},"Domain":{"Int":{"Min":0,"Max":60}}}],"Outlets":[{"uuid":"f1c71046-b754-49a5-8e66-d01374773dfc","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Out","Exposed":"out"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":1,"Hidden":false,"Custom":"Detection","Exposed":"detection"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":2,"Hidden":false,"Custom":"Geometry","Exposed":"geometry"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":3,"Hidden":false,"Custom":"Poses","Exposed":"poses"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":4,"Hidden":false,"Custom":"Poses Geometry","Exposed":"poses geometry"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":5,"Hidden":false,"Custom":"Count","Exposed":"count"}]},{"uuid":"846a5de5-47f9-46c5-a898-013cb20951d0","ObjectName":"Javascript","id":3,"Metadata":{"ScriptingName":"tracking-zones","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[406.59,40.60900000000004],"Size":[319.0,320.0],"Loops":false,"FoldMode":0,"Script":"import Score\nimport QtQuick\nimport \"Geometry.js\" as Geom\nimport \"Ingest.js\" as Ingest\nimport \"Model.js\" as Model\nimport \"ZoneEngine.js\" as ZE\n\n// Tracking Zones — 2D/3D interactive zones over tracked entities.\n// Inputs: up to four sources (lists of maps, device subtrees, vec lists, flat floats…), each calibrated\n// in the editor (Show UI). Outputs per-zone state, events, enriched entities and flat vectors.\nScript {\n    id: root\n\n    // Each inlet accepts one source (entity list, device subtree, bare geometry) OR several sources\n    // at once as a map {name: payload} (e.g. a device container with one child per sensor). All\n    // sources arriving on an inlet share that inlet's calibration, so group sensors of the same\n    // kind per inlet: inlet 1 = camera boxes, inlet 2 = centroid tracking, inlet 3 = BlackTrax...\n    ValueInlet { id: src1; objectName: \"Source 1\" }\n    ValueInlet { id: src2; objectName: \"Source 2\" }\n    ValueInlet { id: src3; objectName: \"Source 3\" }\n    ValueInlet { id: src4; objectName: \"Source 4\" }\n    ValueInlet { id: cmdIn; objectName: \"Command\" }\n    LineEdit { id: setIn; objectName: \"Active Set\"; text: \"\" }\n    Toggle { id: bypass; objectName: \"Bypass\"; checked: false }\n    Toggle { id: simIn; objectName: \"Simulation\"; checked: true }\n    Impulse { id: resetBtn; objectName: \"Reset Counters\"; onImpulse: root.engine.resetCounters() }\n\n    ValueOutlet { id: outZones; objectName: \"Zones\" }\n    ValueOutlet { id: outEvents; objectName: \"Events\" }\n    ValueOutlet { id: outEntities; objectName: \"Entities\" }\n    ValueOutlet { id: outCounts; objectName: \"Counts\" }\n    ValueOutlet { id: outOccupied; objectName: \"Occupied\" }\n    ValueOutlet { id: outActivity; objectName: \"Activity\" }\n    ValueOutlet { id: outTree; objectName: \"Tree\" }\n    ValueOutlet { id: outCount; objectName: \"Count\" }\n    ValueOutlet { id: outHeat; objectName: \"Heatmap\" }\n    ValueOutlet { id: outPairs; objectName: \"Proximity\" }\n    // Simple event outlets: one event type each, payload format chosen in the Output pane.\n    ValueOutlet { id: outEnter; objectName: \"Enter\" }\n    ValueOutlet { id: outLeave; objectName: \"Leave\" }\n    ValueOutlet { id: outDwell; objectName: \"Dwell\" }\n    ValueOutlet { id: outCross; objectName: \"Cross\" }\n    ValueOutlet { id: outOccupancy; objectName: \"Occupancy\" }\n    ValueOutlet { id: outLocation; objectName: \"Location\" }\n\n    property var engine: new ZE.Engine()\n    property var doc: Model.defaultDoc()\n    property var calibrators: []\n    property var simEntities: []\n    property real lastUiT: -1\n    property real lastT: 0\n    property bool running: false\n    // recording / playback\n    property var recording: null        // { frames: [{t, inputs}], t0 }\n    property var playback: null         // { frames, loop, speed, playing, pos, idx, lastT }\n    property var lastInputs: []\n    property var uiPrefs: ({ keypoints: false, sourceMonitor: true })\n\n    readonly property real flicksPerSecond: 705600000\n\n    function applyDoc(d, fromUi) {\n        doc = Model.normalizeDoc(d);\n        calibrators = doc.sources.map(function (s) { return Ingest.makeCalibrator(s); });\n        engine.setDoc(doc);\n    }\n\n    loadState: function (state) {\n        if (state && state.tzDoc) {\n            try { applyDoc(typeof state.tzDoc === \"string\" ? JSON.parse(state.tzDoc) : state.tzDoc); return; } catch (e) { console.log(\"tracking-zones: bad state\", e); }\n        }\n        applyDoc(Model.defaultDoc());\n    }\n    stateUpdated: function (k, v) {\n        if (k === \"tzDoc\") { try { applyDoc(typeof v === \"string\" ? JSON.parse(v) : v); } catch (e) { console.log(\"tracking-zones: bad state update\", e); } }\n    }\n\n    uiEvent: function (m) {\n        if (!m || !m.type) return;\n        switch (m.type) {\n        case \"doc\": try { applyDoc(typeof m.doc === \"string\" ? JSON.parse(m.doc) : m.doc); } catch (e) { console.log(\"tracking-zones: bad live doc\", e); } break; // live (uncommitted) edit\n        case \"sim\": simEntities = m.entities || []; break;\n        case \"simClear\": simEntities = []; break;\n        case \"resetCounters\": engine.resetCounters(m.zone || null); break;\n        case \"clearEntities\": engine.clearEntities(); simEntities = []; break;\n        case \"record\":\n            if (m.action === \"start\") { recording = { frames: [], t0: lastT }; }\n            else if (m.action === \"stop\") { if (recording) { var fr = recording.frames; recording = null; uiSend({ type: \"recording\", frames: fr }); } }\n            break;\n        case \"playback\":\n            playback = { frames: m.frames || [], loop: !!m.loop, speed: m.speed || 1, playing: !!m.play, pos: 0, lastT: lastT, duration: (m.frames && m.frames.length) ? m.frames[m.frames.length - 1].t : 0 };\n            engine.clearEntities();\n            break;\n        case \"playbackControl\":\n            if (!playback) break;\n            if (m.action === \"play\") { playback.playing = true; playback.lastT = lastT; }\n            else if (m.action === \"pause\") playback.playing = false;\n            else if (m.action === \"stop\") { playback.playing = false; playback.pos = 0; engine.clearEntities(); }\n            else if (m.action === \"seek\") { playback.pos = Math.max(0, Math.min(playback.duration, m.position || 0)); playback.lastT = lastT; }\n            else if (m.action === \"loop\") playback.loop = !!m.value;\n            else if (m.action === \"speed\") playback.speed = m.value || 1;\n            else if (m.action === \"close\") { playback = null; engine.clearEntities(); }\n            break;\n        case \"requestSnapshot\": lastUiT = -1; break;\n        case \"prefs\": uiPrefs = { keypoints: !!m.keypoints, sourceMonitor: m.sourceMonitor === undefined ? true : !!m.sourceMonitor }; break;\n        }\n    }\n\n    function lastMessage(inlet) {\n        var vs = inlet.values;\n        if (vs && vs.length) return vs[vs.length - 1].value;\n        return inlet.value;\n    }\n\n    // per-inlet diagnostics for the Source monitor pane (cheap: strings only, preview built at UI rate)\n    property var sourceInfo: [null, null, null, null]\n    property var lastRaw: [undefined, undefined, undefined, undefined]\n    function classify(v) {\n        if (typeof v === \"string\") return \"JSON string\";\n        if (Ingest.isVec(v)) return \"single point\";\n        if (Ingest.isList(v)) {\n            if (!v.length) return \"empty list\";\n            var f = v[0];\n            if (typeof f === \"number\") return \"flat floats (\" + v.length + \")\";\n            if (Ingest.isVec(f)) return \"list of vectors (\" + v.length + \")\";\n            if (Ingest.isList(f)) return \"list of lists (\" + v.length + \")\";\n            if (typeof f === \"object\" && f !== null) return \"list of maps (\" + v.length + \")\";\n            return \"list (\" + v.length + \")\";\n        }\n        if (typeof v === \"object\" && v !== null) {\n            var keys = Object.keys(v);\n            if (Ingest.looksLikeEntity(v)) return \"one entity map {\" + keys.slice(0, 6).join(\",\") + \"}\";\n            if (isSourceMap(v)) return \"map of sources {\" + keys.slice(0, 6).join(\",\") + \"}\";\n            return \"map of entities {\" + keys.slice(0, 6).join(\",\") + \"}\";\n        }\n        return typeof v;\n    }\n    function gatherInputs(t) {\n        var inputs = [];\n        var inlets = [src1, src2, src3, src4];\n        var infos = sourceInfo;\n        for (var i = 0; i < 4; i++) {\n            var s = doc.sources[i];\n            var vs = inlets[i].values;\n            var info = { inlet: i, enabled: !(!s || s.enabled === false), msgs: vs ? vs.length : 0, kind: \"\", parsed: 0, ids: [], nan: 0, lastT: -1 };\n            if (!info.enabled) { info.kind = \"disabled\"; infos[i] = info; continue; }\n            var v = lastMessage(inlets[i]);\n            if (v === undefined || v === null) { info.kind = \"no data yet\"; infos[i] = info; continue; }\n            lastRaw[i] = v;\n            info.kind = uiPrefs.sourceMonitor ? classify(v) : \"\";\n            var ents;\n            if (isSourceMap(v)) {\n                // several sources on one inlet: {name: payload}. All share this inlet's calibration;\n                // ids are prefixed with the sub-source name so trackers cannot collide.\n                ents = [];\n                for (var name in v) {\n                    var pl = v[name];\n                    if (pl && typeof pl === \"object\" && (pl.active === false || pl.tracked === false)) continue;\n                    var sub = Ingest.parseEntities(pl, s);\n                    for (var q = 0; q < sub.length; q++) { sub[q].id = name + \".\" + sub[q].id; ents.push(sub[q]); }\n                }\n            } else {\n                ents = Ingest.parseEntities(v, s);\n            }\n            var cal = calibrators[i];\n            var kept = [];\n            for (var j = 0; j < ents.length; j++) {\n                cal.apply(ents[j]);\n                var p = ents[j].pos;\n                if (!isFinite(p[0]) || !isFinite(p[1]) || !isFinite(p[2])) { info.nan++; continue; }   // never feed NaN to the engine\n                kept.push(ents[j]);\n                if (uiPrefs.sourceMonitor && info.ids.length < 8) info.ids.push(ents[j].id + \" @ \" + p[0].toFixed(2) + \",\" + p[1].toFixed(2) + \",\" + p[2].toFixed(2));\n            }\n            info.parsed = ents.length; info.lastT = t;\n            infos[i] = info;\n            inputs.push({ src: i, entities: kept });\n        }\n        return inputs;\n    }\n    function sourceInfoForUi() {\n        var out = [];\n        for (var i = 0; i < 4; i++) {\n            var inf = sourceInfo[i] || { inlet: i, enabled: true, msgs: 0, kind: \"no data yet\", parsed: 0, ids: [], nan: 0, lastT: -1 };\n            var prev = \"\";\n            try { var r = lastRaw[i]; if (r !== undefined) { prev = typeof r === \"string\" ? r : JSON.stringify(r); if (prev.length > 600) prev = prev.substr(0, 600) + \" ...\"; } } catch (e) { prev = \"(unprintable: \" + e + \")\"; }\n            out.push({ inlet: inf.inlet, enabled: inf.enabled, msgs: inf.msgs, kind: inf.kind, parsed: inf.parsed, ids: inf.ids.join(\"\\n\"), nan: inf.nan, lastT: inf.lastT, preview: prev });\n        }\n        return out;\n    }\n    // A map whose values are all containers (lists or maps) of entities: {name: payload}.\n    // A map whose values are themselves entities (PSN/TUIO/Leap subtrees: {t0: {position...}},\n    // {left: {palm...}}) is NOT a source map; parseEntities handles it as one source.\n    function isSourceMap(v) {\n        if (typeof v !== \"object\" || v === null || Ingest.isList(v) || Ingest.isVec(v)) return false;\n        if (Ingest.looksLikeEntity(v)) return false;\n        var keys = Object.keys(v); if (!keys.length) return false;\n        for (var i = 0; i < keys.length; i++) {\n            var x = v[keys[i]];\n            if (Ingest.isList(x)) continue;\n            if (typeof x === \"object\" && x !== null && !Ingest.isVec(x)) { if (Ingest.looksLikeEntity(x)) return false; continue; }\n            return false;\n        }\n        return true;\n    }\n\n    function playbackInputs(t) {\n        var pb = playback; if (!pb || !pb.frames.length) return [];\n        if (pb.playing) {\n            pb.pos += (t - pb.lastT) * pb.speed; pb.lastT = t;\n            if (pb.pos > pb.duration) { if (pb.loop) { pb.pos = pb.duration > 0 ? pb.pos % pb.duration : 0; engine.clearEntities(); } else { pb.pos = pb.duration; pb.playing = false; } }\n        }\n        // find frame at pos (binary search)\n        var fr = pb.frames, lo = 0, hi = fr.length - 1;\n        while (lo < hi) { var mid = (lo + hi + 1) >> 1; if (fr[mid].t <= pb.pos) lo = mid; else hi = mid - 1; }\n        var f = fr[lo];\n        // inject as recorded (already calibrated, world space) — clone to avoid mutation\n        return (f.inputs || []).map(function (inp) { return { src: inp.src, entities: JSON.parse(JSON.stringify(inp.entities)) }; });\n    }\n\n    function v3(a) { return Qt.vector3d(a[0], a[1], a[2]); }\n\n    function convertOutputsInPlace(res) {\n        // arrays of 3 for positions become vec3 so downstream nodes get vec3f (the snapshot has already been taken)\n        var zs = res.zones;\n        for (var i = 0; i < zs.length; i++) { var z = zs[i]; z.centroid = v3(z.centroid); var per = z.per_id; if (per) for (var j = 0; j < per.length; j++) per[j].pos = v3(per[j].pos); }\n        var es = res.entities;\n        for (var k = 0; k < es.length; k++) { var e = es[k]; e.pos = v3(e.pos); e.vel = v3(e.vel); }\n    }\n\n    property real perfTickMs: 0\n    property real perfEngineMs: 0\n    property int perfTicks: 0\n    property real perfLastT: 0\n    property real perfHz: 0\n\n    tick: function (token, state) {\n        var w0 = Util.timestamp();\n        var t = token.date / flicksPerSecond;\n        if (t < lastT) { /* transport jumped back: keep monotonic engine time */ t = lastT + (state.buffer_size / state.sample_rate); }\n        lastT = t;\n        // commands\n        var cmd = lastMessage(cmdIn);\n        if (cmd !== undefined && cmd !== null) handleCommand(cmd);\n        if (bypass.value) return;\n\n        var inputs = playback ? playbackInputs(t) : gatherInputs(t);\n        if (simIn.value && simEntities.length && !playback) {\n            inputs.push({ src: 4, entities: simEntities.map(function (e) { return { id: String(e.id), pos: [e.pos[0], e.pos[1], e.pos[2] || 0], vel: e.vel ? e.vel.slice() : null, conf: 1, cls: e.cls || \"\", name: e.name || \"\", keypoints: null, kpFormat: \"\", size: null, height: e.height || 0, heading: e.heading === undefined ? null : e.heading, extra: {} }; }) });\n        }\n        if (recording) recording.frames.push({ t: t - recording.t0, inputs: inputs.map(function (inp) { return { src: inp.src, entities: inp.entities.map(function (e) { return { id: e.id, pos: e.pos, vel: e.vel, conf: e.conf, cls: e.cls, name: e.name, keypoints: e.keypoints, kpFormat: e.kpFormat, size: e.size, height: e.height, heading: e.heading, extra: {} }; }) }; }) });\n\n        var activeSet = setIn.value && String(setIn.value).length ? String(setIn.value) : doc.settings.activeSet;\n        if (engine.doc.settings.activeSet !== activeSet) engine.doc.settings.activeSet = activeSet;\n\n        var w1 = Util.timestamp();\n        var res = engine.update(inputs, t);\n        var w2 = Util.timestamp();\n        perfEngineMs = perfEngineMs * 0.9 + (w2 - w1) * 1000 * 0.1;\n        // UI snapshot first (it reads positions as arrays), then convert positions to vec3 in place for the outlets\n        perfTicks++;\n        if (t - perfLastT >= 1) { perfHz = perfTicks / Math.max(0.001, t - perfLastT); perfTicks = 0; perfLastT = t; }\n        var rate = doc.settings.uiRate || 30;\n        var snap = null;\n        if (lastUiT < 0 || t - lastUiT >= 1 / rate) {\n            lastUiT = t;\n            snap = engine.snapshot(res, uiPrefs);\n            snap.type = \"snapshot\";\n            snap.recording = !!recording; snap.recordingFrames = recording ? recording.frames.length : 0;\n            snap.playback = playback ? { pos: playback.pos, duration: playback.duration, playing: playback.playing, loop: playback.loop, speed: playback.speed } : null;\n            snap.activeSet = activeSet;\n            snap.perf = { tickMs: perfTickMs, engineMs: perfEngineMs, tickHz: perfHz };\n            snap.sourceInfo = uiPrefs.sourceMonitor ? sourceInfoForUi() : null;   // off = no JSON previews built\n            snap.simCount = (simIn.value && !playback) ? simEntities.length : 0;\n        }\n        convertOutputsInPlace(res);\n        outZones.value = res.zones;\n        // bounded: never push more than 256 events in one tick downstream\n        if (res.events.length) outEvents.value = res.events.length > 256 ? res.events.slice(0, 256) : res.events;\n        outEntities.value = res.entities;\n        outCounts.value = res.counts;\n        outOccupied.value = res.occupied;\n        outActivity.value = res.activity;\n        outTree.value = res.tree;\n        outCount.value = res.count;\n        if (res.heatmap.length) outHeat.value = res.heatmap;\n        if (doc.settings.proximity && doc.settings.proximity.enabled) outPairs.value = res.pairs;\n        emitSimpleOutputs(res);\n        if (snap) uiSend(snap);\n        perfTickMs = perfTickMs * 0.9 + (Util.timestamp() - w0) * 1000 * 0.1;\n    }\n    // Simple event outlets (Enter/Leave/Dwell/Cross/Occupancy: one message per event via addValue)\n    // and the Location outlet (per-entity current zone, sent on change by default).\n    property string lastLocationJson: \"\"\n    function emitSimpleOutputs(res) {\n        var so = doc.settings.outputs;\n        if (!so) return;\n        var n = Math.min(res.events.length, 256);\n        for (var i = 0; i < n; i++) {\n            var ev = res.events[i];\n            var cfg = null, dst = null;\n            switch (ev.type) {\n            case \"enter\": cfg = so.enter; dst = outEnter; break;\n            case \"exit\": cfg = so.exit; dst = outLeave; break;\n            case \"dwell\": cfg = so.dwell; dst = outDwell; break;\n            case \"cross\": cfg = so.cross; dst = outCross; break;\n            case \"occupied\": case \"empty\": cfg = so.occupancy; dst = outOccupancy; break;\n            }\n            if (cfg && cfg.enabled) dst.addValue(0, ZE.formatEvent(ev, cfg.format));\n        }\n        var lc = so.location;\n        if (lc && lc.enabled) {\n            var loc = ZE.locationOutput(res.entities, lc);\n            var lj = JSON.stringify(loc);\n            if (lc.onChange === false || lj !== lastLocationJson) { lastLocationJson = lj; outLocation.value = loc; }\n        }\n    }\n    function handleCommand(cmd) {\n        if (typeof cmd === \"string\") {\n            if (cmd === \"reset\") engine.resetCounters();\n            else if (cmd === \"clear\") engine.clearEntities();\n            else if (cmd.indexOf(\"set:\") === 0) { doc.settings.activeSet = cmd.substr(4); engine.doc.settings.activeSet = doc.settings.activeSet; }\n        } else if (typeof cmd === \"object\" && cmd !== null) {\n            if (cmd.cmd === \"doc\" && cmd.doc !== undefined) { try { applyDoc(typeof cmd.doc === \"string\" ? JSON.parse(cmd.doc) : cmd.doc); uiSend({ type: \"docLoaded\", doc: JSON.stringify(doc) }); } catch (e) { console.log(\"tracking-zones: bad doc command\", e); } }\n            else if (cmd.cmd === \"ui\") { var m = {}; for (var kk in cmd) m[kk] = cmd[kk]; m.type = \"uiaction\"; uiSend(m); }\n            else if (cmd.cmd === \"reset\") engine.resetCounters(cmd.zone || null);\n            else if (cmd.cmd === \"clear\") engine.clearEntities();\n            else if (cmd.cmd === \"set\") { doc.settings.activeSet = String(cmd.value || \"\"); engine.doc.settings.activeSet = doc.settings.activeSet; }\n            else if (cmd.cmd === \"enable\" && cmd.zone !== undefined) { for (var i = 0; i < doc.zones.length; i++) if (doc.zones[i].name === cmd.zone || doc.zones[i].id === cmd.zone) doc.zones[i].enabled = !!cmd.value; engine.setDoc(doc); }\n        }\n    }\n\n    start: function () { running = true; lastUiT = -1; }\n    stop: function () { running = false; }\n}\n","Ui":"import Score as Score\nimport QtQuick\nimport QtQuick.Controls\nimport QtQuick.Layouts\nimport \"Geometry.js\" as Geom\nimport \"Model.js\" as Model\nimport \"UiUtil.js\" as U\nimport OssiaUI as S\n\n// Tracking Zones — editor window.\n// The document (zones / sources / settings) lives in the process state under key \"tzDoc\" (JSON).\n// Live edits are pushed to the execution with executionSend({type:\"doc\"}); committed edits go through\n// beginUpdateState/updateState/endUpdateState so they are undoable.\nScore.ScriptUI {\n    id: root\n    anchors.fill: parent\n    implicitWidth: 1280   // requested window size (honoured by score >= 3.8.3)\n    implicitHeight: 860\n\n    // ---------------- document & selection ----------------\n    property var doc: Model.defaultDoc()\n    property int docVersion: 0\n    property var selection: []            // zone ids\n    property string selectedId: selection.length ? selection[selection.length - 1] : \"\"\n    property var selectedZone: { docVersion; selection; return zoneById(selectedId); }\n    property string tool: \"select\"\n    property string viewMode: \"2d\"        // 2d | 3d | split\n    property string gizmoMode: \"move\"     // move | rotate | scale (3D gizmo)\n    property bool snapping: true\n    property real gridStep: 0.5\n    property bool showMode: false\n    property bool showTrails: true\n    property bool showLabels: true\n    property bool showHeat: false\n    property bool bottomVisible: true\n    property int bottomTab: 0\n    property real bottomHeight: 240\n    property var snapshot: null           // last execution snapshot\n    property var zoneStates: ({})         // zone id -> live state (from the last processed snapshot)\n    property real lastHandledWall: 0\n    property int droppedSnapshots: 0\n    property var lastDropped: null\n    property bool pendingEvents: false\n    property bool showKeypoints: false\n    property bool showVelocity: true\n    property bool eventMonitorEnabled: true     // when off, incoming events are not appended to the log\n    property bool sourceMonitorEnabled: true    // when off, the execution skips the per-inlet diagnostics\n    onShowKeypointsChanged: sendPrefs()\n    onSourceMonitorEnabledChanged: sendPrefs()\n    function sendPrefs() { root.executionSend({ type: \"prefs\", keypoints: showKeypoints, sourceMonitor: sourceMonitorEnabled }); }\n    ListModel { id: eventModel }          // event log rows: {t, type, zone, id, detail}\n    property alias eventLog: eventModel\n    function eventDetail(ev) { var parts = []; if (ev.direction) parts.push(ev.direction + \" (\" + ev[\"in\"] + \"/\" + ev.out + \")\"); if (ev.dwell !== undefined) parts.push(\"dwell \" + U.fmt(ev.dwell, 1) + \"s\"); if (ev.lost) parts.push(\"lost\"); if (ev.count !== undefined) parts.push(\"count \" + ev.count); if (ev.from) parts.push(\"from \" + (ev.from.length !== undefined ? Array.prototype.join.call(ev.from, \",\") : ev.from)); if (ev.capacity !== undefined) parts.push(ev.over ? \"over capacity\" : \"back under capacity\"); if (ev.other !== undefined) parts.push(\"with \" + ev.other + \" \" + (ev.state || \"\") + (ev.dist !== undefined ? \" \" + U.fmt(ev.dist, 2) + \" m\" : \"\")); return parts.join(\"  \"); }\n    property int eventLogVersion: 0\n    property int evSecond: -1              // event-log rate limiter\n    property int evThisSecond: 0\n    property int droppedEvents: 0          // rows not shown because of the per-second limit\n    property var trails: ({})             // key -> [[x,y],...]\n    property real lastSnapshotT: -1\n    property real lastSnapshotWall: 0\n    property bool liveData: false         // true while snapshots keep arriving (transport running)\n    property var perf: ({ tickMs: 0, engineMs: 0, tickHz: 0, snapshotHz: 0, uiFps: 0 })\n    property string statusText: \"\"\n\n    function renameZone(id, surface, x, y, width, pixelSize) {\n        var zone = zoneById(id);\n        if (showMode || !zone || zone.locked) return;\n        zoneNameEditor.finish(true);\n        select(id, false);\n        zoneNameEditor.zoneId = id;\n        zoneNameEditor.originalName = zone.name;\n        zoneNameEditor.parent = surface;\n        zoneNameEditor.width = Math.min(surface.width, Math.max(120, width));\n        zoneNameEditor.x = Math.max(0, Math.min(surface.width - zoneNameEditor.width, x));\n        zoneNameEditor.y = Math.max(0, Math.min(surface.height - 32, y));\n        zoneNameEditor.font.pixelSize = pixelSize;\n        zoneNameEditor.begin(zone.name);\n    }\n    onSelectionChanged: zoneNameEditor.finish(true)\n    onDocChanged: zoneNameEditor.finish(false)\n    onViewModeChanged: zoneNameEditor.finish(true)\n    onToolChanged: zoneNameEditor.finish(true)\n    onShowModeChanged: zoneNameEditor.finish(false)\n    S.SInlineTextEditor {\n        id: zoneNameEditor\n        property string zoneId: \"\"\n        property string originalName: \"\"\n        z: 100\n        padding: 3\n        background: Rectangle { color: S.Theme.control; border.color: S.Theme.accent; border.width: 1 }\n        height: Math.max(28, contentHeight + topPadding + bottomPadding)\n        onFinished: function(value, accepted) {\n            var id = zoneId;\n            zoneId = \"\";\n            if (accepted && value !== originalName && root.zoneById(id))\n                root.setZoneProp(id, \"name\", value, \"Rename zone\");\n        }\n    }\n\n    // ---------------- simulation ----------------\n    property bool simEnabled: true\n    property var simEntities: []          // [{id, pos, vel, heading, kind:\"dummy\"|\"walker\", cls, height}]\n    property int simVersion: 0\n    property real simSpeed: 1.0\n    property real simNoise: 0.2\n    property var simBounds: ({ x: 0, y: 0, w: 8, h: 6 })\n    property int nextSimId: 1\n    property string draggingSim: \"\"\n\n    // ---------------- recording / playback ----------------\n    property bool recording: false\n    property var playbackInfo: null\n    property string recordingsDir: Util.settings(\"d6966670-f69f-48d0-96f6-72a5e2190cbc\").RootPath + \"/tracking-zones-recordings\"\n    property string lastRecordingPath: \"\"\n\n    // ---------------- state plumbing ----------------\n    function parseDoc(v) { try { return Model.normalizeDoc(typeof v === \"string\" ? JSON.parse(v) : v); } catch (e) { console.log(\"tracking-zones ui: bad doc\", e); return Model.defaultDoc(); } }\n    loadState: function (state) {\n        if (state && state.tzDoc) doc = parseDoc(state.tzDoc); else doc = Model.defaultDoc();\n        docVersion++;\n    }\n    stateUpdated: function (k, v) {\n        if (k === \"tzDoc\") { doc = parseDoc(v); docVersion++; pruneSelection(); sendLive(); }\n    }\n    executionEvent: function (m) {\n        if (!m || !m.type) return;\n        if (m.type === \"snapshot\") {\n            var now = Date.now();\n            lastSnapshotWall = now; if (!liveData) liveData = true;\n            // always keep the latest events, but only *process* snapshots at the UI rate: if the execution runs faster than\n            // the GUI can repaint, the extra snapshots are dropped here instead of piling up in the event loop\n            var e0 = Date.now();\n            if (m.events && m.events.length && eventMonitorEnabled) {\n                // bounded event log: at most maxEventsPerSec rows added per second, at most maxEvents rows kept\n                var lim = doc.settings.monitor || { maxEvents: 400, maxEventsPerSec: 100 };\n                var sec = Math.floor(now / 1000); if (sec !== evSecond) { evSecond = sec; evThisSecond = 0; }\n                for (var i = 0; i < m.events.length; i++) {\n                    if (evThisSecond >= (lim.maxEventsPerSec || 100)) { droppedEvents += m.events.length - i; break; }\n                    var ev = m.events[i]; evThisSecond++;\n                    eventModel.append({ t: ev.t, type: String(ev.type), zone: String(ev.zone || \"\"), eid: ev.id === undefined || ev.id === \"\" ? \"\" : String(ev.id), detail: eventDetail(ev) });\n                }\n                var maxRows = Math.max(10, lim.maxEvents || 400);\n                if (eventModel.count > maxRows) eventModel.remove(0, eventModel.count - maxRows);\n                eventLogVersion++; perfAcc.evN += m.events.length;\n            }\n            perfAcc.evMs += Date.now() - e0;\n            if (now - lastHandledWall < 1000 / Math.max(5, doc.settings.uiRate || 30) * 0.9) { droppedSnapshots++; lastDropped = m; return; }\n            lastHandledWall = now;\n            var w0 = now;\n            lastSnapshotT = m.t; snapCount++;\n            if (m.perf) perf = { tickMs: m.perf.tickMs, engineMs: m.perf.engineMs, tickHz: m.perf.tickHz, snapshotHz: perf.snapshotHz, uiFps: perf.uiFps };\n            recording = !!m.recording; playbackInfo = m.playback || null;\n            // zone states by id (one map per snapshot; delegates read it instead of scanning the list)\n            var zsMap = {}; if (m.zones) for (var zi = 0; zi < m.zones.length; zi++) zsMap[m.zones[zi].id] = m.zones[zi];\n            zoneStates = zsMap;\n            snapshot = m;\n            if (showTrails) updateTrails(m.entities);\n            perfAcc.snapMs += Date.now() - w0; perfAcc.snapN++;\n        } else if (m.type === \"recording\") {\n            saveRecording(m.frames);\n        } else if (m.type === \"uiaction\") {\n            uiAction(m);\n        } else if (m.type === \"docLoaded\") {\n            // a document arrived through the Command inlet: adopt and persist it\n            doc = parseDoc(m.doc); selection = []; commit(\"Load zones\");\n        }\n    }\n    // scripted UI actions (used by the tests and by the Command inlet: {cmd:\"ui\", action:..., ...})\n    function uiAction(m) {\n        switch (m.action) {\n        case \"grab\": root.grabToImage(function (res) { var ok = res.saveToFile(m.path); console.log(\"tracking-zones ui: grab\", m.path, ok); }); break;\n        case \"graboverlay\": { var ov = root.Overlay.overlay; console.log(\"tracking-zones ui: overlay children\", ov.children.length); if (ov.children.length) ov.children[0].grabToImage(function (res) { var ok = res.saveToFile(m.path); console.log(\"tracking-zones ui: graboverlay\", m.path, ok); }); break; }\n        case \"select\": { var z = doc.zones.filter(function (q) { return q.name === m.name || q.id === m.name; })[0]; selection = z ? [z.id] : []; break; }\n        case \"tool\": tool = m.value; break;\n        case \"view\": viewMode = m.value; break;\n        case \"gizmo\": gizmoMode = m.value; break;\n        case \"tab\": bottomTab = m.value; bottomVisible = true; break;\n        case \"fit\": canvas2d.fitAll(); break;\n        case \"zoom\": canvas2d.ppm = m.value; break;\n        case \"center\": canvas2d.cx = m.x; canvas2d.cy = m.y; break;\n        case \"walkers\": addWalkers(m.value || 5); break;\n        case \"dummy\": addDummy(m.x || 0, m.y || 0); break;\n        case \"clearSim\": clearSim(); break;\n        case \"showMode\": showMode = !!m.value; break;\n        case \"heat\": showHeat = !!m.value; break;\n        case \"addZone\": addZone(m.zoneType || \"rect\", m.x || 0, m.y || 0); break;\n        case \"setProp\": if (selectedId) setZoneProp(selectedId, m.path, m.value, \"Edit\"); break;\n        case \"record\": m.value ? startRecording() : stopRecording(); break;\n        case \"playLast\": loadRecording(lastRecordingPath); break;\n        case \"dumpdoc\": Util.writeFile(m.path, JSON.stringify({ doc: doc, selection: selection, tool: tool, sim: simEntities }, null, 1)); break;\n        case \"synth\": synthInput(m.steps || []); break;\n        case \"dumpstatus\": Util.writeFile(m.path, JSON.stringify({ lastRecordingPath: lastRecordingPath, recording: recording, playback: playbackInfo, entities: snapshot ? snapshot.count : 0, zones: doc.zones.length, status: statusText, events: eventModel.count, perf: perf, perfDetail: perfDetail, liveData: liveData, gizmo: { len: view3d.gizmoLen, visible: view3d.gizmoVisible }, stats3d: view3d.stats(), selected: selectedZone ? { name: selectedZone.name, pos: selectedZone.pos, rot: selectedZone.rot, shape: selectedZone.shape } : null, gizmoMode: gizmoMode, viewMode: viewMode, bottomHeight: bottomHeight, bottomTab: bottomTab, sourceInfo: snapshot ? snapshot.sourceInfo : null, droppedEvents: droppedEvents })); break;\n        case \"undo\": Score.Editor.undo(); break;\n        case \"redo\": Score.Editor.redo(); break;\n        }\n    }\n\n    // In-process synthetic input for tests (QtTest event injection into the 2D canvas). Coordinates are world metres.\n    property var synthDriver: null\n    function synthInput(steps) {\n        try {\n            if (!synthDriver) synthDriver = Qt.createQmlObject('import QtTest; TestCase { when: false; name: \"tz-synth\" }', root, \"synth\");\n            var tc = synthDriver; var it = canvas2d;\n            try { if (root.Window.window) root.Window.window.requestActivate(); } catch (e2) {}\n            var btn = function (s) { return s.button === \"right\" ? Qt.RightButton : (s.button === \"middle\" ? Qt.MiddleButton : Qt.LeftButton); };\n            var mods = function (s) { var mm = Qt.NoModifier; if (s.shift) mm |= Qt.ShiftModifier; if (s.ctrl) mm |= Qt.ControlModifier; if (s.alt) mm |= Qt.AltModifier; return mm; };\n            for (var i = 0; i < steps.length; i++) {\n                var s = steps[i];\n                var sx = 0, sy = 0;\n                if (s.view === \"3d\") { it = view3d; if (s.x !== undefined) { var pp = view3d.project(s.x, s.y, s.z || 0); sx = pp[0]; sy = pp[1]; } }\n                else if (s.view === \"ui\") { it = root; }   // absolute window pixels via s.px/s.py\n                else { it = canvas2d; if (s.x !== undefined) { sx = it.w2sx(s.x); sy = it.w2sy(s.y); } }\n                if (s.px !== undefined) { sx = s.px; sy = s.py; }\n                switch (s.t) {\n                case \"press\": tc.mousePress(it, sx, sy, btn(s), mods(s), 10); break;\n                case \"move\": tc.mouseMove(it, sx, sy, 10); break;\n                case \"release\": tc.mouseRelease(it, sx, sy, btn(s), mods(s), 10); break;\n                case \"click\": tc.mouseClick(it, sx, sy, btn(s), mods(s), 10); break;\n                case \"dblclick\": tc.mouseDoubleClickSequence(it, sx, sy, btn(s), mods(s), 10); break;\n                case \"drag\": {\n                    var x1 = 0, y1 = 0; var n = s.n || 8;\n                    if (s.view !== \"3d\" && s.x1 !== undefined) { x1 = it.w2sx(s.x1); y1 = it.w2sy(s.y1); }\n                    if (s.view === \"3d\") { var p1 = view3d.project(s.x1, s.y1, s.z1 || 0); x1 = p1[0]; y1 = p1[1]; }\n                    if (s.px1 !== undefined) { x1 = s.px1; y1 = s.py1; }\n                    if (s.dxPx !== undefined || s.dyPx !== undefined) { x1 = sx + (s.dxPx || 0); y1 = sy + (s.dyPx || 0); }\n                    tc.mousePress(it, sx, sy, btn(s), mods(s), 10);\n                    for (var k = 1; k <= n; k++) tc.mouseMove(it, sx + (x1 - sx) * k / n, sy + (y1 - sy) * k / n, 10);\n                    tc.mouseRelease(it, x1, y1, btn(s), mods(s), 10);\n                    break;\n                }\n                case \"key\": root.forceActiveFocus(); tc.keyClick(s.key, mods(s), 10); break;\n                case \"keyraw\": tc.keyClick(s.key, mods(s), 10); break;   // to whatever item has focus\n                case \"tool\": tool = s.value; break;\n                case \"wheel\": tc.mouseWheel(it, sx, sy, 0, s.delta || 120, Qt.NoButton, Qt.NoModifier, 10); break;\n                }\n            }\n            console.log(\"tracking-zones ui: synth done\", steps.length, \"tool\", tool, \"zones\", doc.zones.length, \"mode\", canvas2d.mode, \"hover\", JSON.stringify(canvas2d.hoverW), \"focus\", root.activeFocus, \"win\", root.Window.window ? root.Window.window.width : -1);\n            statusText = \"synth: \" + steps.length + \" steps done\";\n        } catch (e) { console.log(\"tracking-zones ui: synth failed\", e); statusText = \"synth failed: \" + e; }\n    }\n\n    function zoneById(id) { if (!id) return null; for (var i = 0; i < doc.zones.length; i++) if (doc.zones[i].id === id) return doc.zones[i]; return null; }\n    function zoneIndex(id) { for (var i = 0; i < doc.zones.length; i++) if (doc.zones[i].id === id) return i; return -1; }\n    function pruneSelection() { var s = []; for (var i = 0; i < selection.length; i++) if (zoneById(selection[i])) s.push(selection[i]); selection = s; }\n    function select(id, additive) {\n        if (!id) { selection = []; return; }\n        if (additive) { var s = selection.slice(); var k = s.indexOf(id); if (k >= 0) s.splice(k, 1); else s.push(id); selection = s; }\n        else selection = [id];\n    }\n    function isSelected(id) { return selection.indexOf(id) >= 0; }\n\n    function commit(label) {\n        if (showMode) return;\n        root.beginUpdateState(label || \"Edit zones\");\n        root.updateState(\"tzDoc\", JSON.stringify(doc));\n        root.endUpdateState();\n        docVersion++;\n        sendLive();\n    }\n    function touch() { docVersion++; liveDirty = true; if (!liveTimer.running) liveTimer.start(); }   // live, uncommitted (coalesced to ~30 Hz)\n    property bool liveDirty: false\n    Timer { id: liveTimer; interval: 33; repeat: false; onTriggered: { if (root.liveDirty) { root.liveDirty = false; root.sendLive(); } } }\n    function sendLive() { liveDirty = false; root.executionSend({ type: \"doc\", doc: JSON.stringify(doc) }); }\n\n    // ---------------- zone operations ----------------\n    function addZone(type, wx, wy, opts) {\n        if (showMode) return null;\n        var z = Model.makeZone(type, doc.zones.length);\n        z.pos = [wx || 0, wy || 0, (type === \"box\" || type === \"sphere\" || type === \"cylinder\") ? (z.shape.d ? z.shape.d / 2 : (z.shape.r || 1)) : 0];\n        if (opts) for (var k in opts) z[k] = opts[k];\n        if (doc.settings.activeSet) z.set = doc.settings.activeSet;\n        doc.zones.push(z);\n        selection = [z.id];\n        commit(\"Add \" + type);\n        return z;\n    }\n    function addZones(list, label) { if (showMode) return; for (var i = 0; i < list.length; i++) doc.zones.push(list[i]); selection = list.map(function (z) { return z.id; }); commit(label || \"Add zones\"); }\n    function deleteSelected() {\n        if (showMode || !selection.length) return;\n        doc.zones = doc.zones.filter(function (z) { return !root.isSelected(z.id) || z.locked; });\n        selection = []; commit(\"Delete zones\");\n    }\n    function duplicateSelected() {\n        if (showMode || !selection.length) return;\n        var added = [];\n        for (var i = 0; i < selection.length; i++) { var z = zoneById(selection[i]); if (!z) continue; var c = Model.cloneZone(z); c.id = Model.uid(\"z\"); c.name = U.incrementName(z.name); c.pos = [z.pos[0] + 0.5, z.pos[1] - 0.5, z.pos[2]]; doc.zones.push(c); added.push(c.id); }\n        selection = added; commit(\"Duplicate zones\");\n    }\n    function moveSelected(dx, dy, live) {\n        if (showMode) return;\n        for (var i = 0; i < selection.length; i++) { var z = zoneById(selection[i]); if (!z || z.locked) continue; z.pos = [z.pos[0] + dx, z.pos[1] + dy, z.pos[2]]; }\n        if (live) touch(); else commit(\"Move zones\");\n    }\n    function setZoneProp(id, path, value, label) {\n        if (showMode) return;\n        var z = zoneById(id); if (!z) return;\n        U.deepSet(z, path, value);\n        if (path === \"shape.type\") { var ns = Model.defaultShape(value); for (var k in ns) if (z.shape[k] === undefined) z.shape[k] = ns[k]; z.shape.type = value; }\n        commit(label || (\"Edit \" + path));\n    }\n    function setZonePropLive(id, path, value) { var z = zoneById(id); if (!z) return; U.deepSet(z, path, value); touch(); }\n    function setSelectedProp(path, value, label) { if (showMode) return; for (var i = 0; i < selection.length; i++) { var z = zoneById(selection[i]); if (z) U.deepSet(z, path, value); } commit(label || (\"Edit \" + path)); }\n    function reorderZone(from, to) { if (showMode || from === to || from < 0 || to < 0 || from >= doc.zones.length || to >= doc.zones.length) return; var z = doc.zones.splice(from, 1)[0]; doc.zones.splice(to, 0, z); commit(\"Reorder zones\"); }\n    function setSettings(path, value, label) { if (showMode) return; U.deepSet(doc.settings, path, value); commit(label || \"Edit settings\"); }\n    readonly property url floorPlanUrl: {\n        docVersion;\n        var path = doc.settings.backdrop.path;\n        if (!path) return \"\";\n        path = path.replace(/\\\\/g, \"/\");\n        var encoded = encodeURI(path).replace(/#/g, \"%23\").replace(/\\?/g, \"%3F\");\n        return (path.charAt(0) === \"/\" ? \"file://\" : \"file:///\") + encoded;\n    }\n    function applyFloorPlan(path, position) {\n        if (showMode || !path) return;\n        zoneNameEditor.finish(true);\n        var backdrop = doc.settings.backdrop;\n        var size = Util.imageSize(path);\n        backdrop.path = path;\n        if (size && size.width > 0 && size.height > 0)\n            backdrop.h = backdrop.w * size.height / size.width;\n        if (position) { backdrop.x = position[0]; backdrop.y = position[1]; }\n        commit(\"Load floor plan\");\n        statusText = \"Floor plan loaded: \" + path;\n    }\n    function chooseFloorPlan() {\n        if (showMode) return;\n        Util.openFileDialog(\"Load floor plan\", \"Images (*.png *.jpg *.jpeg *.gif *.bmp *.svg *.svgz *.webp)\", \"\", function(path) {\n            if (root && path) root.applyFloorPlan(path);\n        });\n    }\n    function setSource(i, path, value, label) { if (showMode) return; var cfg = doc.sources[i]; if (!cfg) return; U.deepSet(cfg, path, value); commit(label || \"Edit source\"); }\n    function sourceCfg(i) { return doc.sources[i]; }\n    function sourceKeys() { docVersion; return [0, 1, 2, 3]; }\n    function fitView() { canvas2d.fitAll(); }\n    function readTextFile(path) { try { return U.bufToString(Util.readFile(path)); } catch (e) { return \"\"; } }\n    function importDoc(jsonText) { try { var d = Model.normalizeDoc(JSON.parse(jsonText)); doc = d; selection = []; commit(\"Import zones\"); } catch (e) { statusText = \"Import failed: \" + e; } }\n    function exportDoc() { return JSON.stringify(doc, null, 2); }\n    function zoneSetsList() { docVersion; var s = {}; for (var i = 0; i < doc.zones.length; i++) if (doc.zones[i].set) s[doc.zones[i].set] = true; for (var j = 0; j < doc.sets.length; j++) s[doc.sets[j]] = true; return Object.keys(s); }\n\n    // ---------------- simulation ----------------\n    function simSend() { root.executionSend({ type: \"sim\", entities: simEnabled ? simEntities.map(function (e) { return { id: e.id, pos: e.pos, vel: e.vel || [0, 0, 0], heading: e.heading || 0, cls: e.cls || \"\", height: e.height || 1.7, name: e.name || \"\" }; }) : [] }); }\n    function addDummy(wx, wy) { var e = { id: \"sim\" + (nextSimId++), pos: [wx, wy, 0], vel: [0, 0, 0], kind: \"dummy\", cls: \"person\", height: 1.7 }; var l = simEntities.slice(); l.push(e); simEntities = l; simVersion++; simSend(); return e; }\n    function addWalkers(n) { var l = simEntities.slice(); for (var i = 0; i < n; i++) l.push({ id: \"sim\" + (nextSimId++), pos: [simBounds.x + (Math.random() - 0.5) * simBounds.w, simBounds.y + (Math.random() - 0.5) * simBounds.h, 0], vel: [0, 0, 0], kind: \"walker\", cls: \"person\", height: 1.5 + Math.random() * 0.5, speedMul: 0.6 + Math.random() * 0.8 }); simEntities = l; simVersion++; simSend(); }\n    function clearSim() { simEntities = []; simVersion++; root.executionSend({ type: \"simClear\" }); }\n    function removeSim(id) { simEntities = simEntities.filter(function (e) { return e.id !== id; }); simVersion++; simSend(); }\n    function simById(id) { for (var i = 0; i < simEntities.length; i++) if (simEntities[i].id === id) return simEntities[i]; return null; }\n    Timer {\n        id: simTimer; interval: 33; repeat: true; running: root.simEnabled && root.simEntities.length > 0\n        onTriggered: {\n            var dt = interval / 1000; var l = root.simEntities; var any = false;\n            for (var i = 0; i < l.length; i++) { var e = l[i]; if (e.kind === \"walker\") { U.walkerStep(e, dt, root.simBounds, root.simSpeed, root.simNoise); any = true; } else if (e.id === root.draggingSim) any = true; }\n            root.simSend(); if (any) root.simVersion++;\n        }\n    }\n    onSimEnabledChanged: simSend()\n\n    // ---------------- recording / playback ----------------\n    function startRecording() { root.executionSend({ type: \"record\", action: \"start\" }); }\n    function stopRecording() { root.executionSend({ type: \"record\", action: \"stop\" }); }\n    function saveRecording(frames) {\n        var name = \"rec-\" + new Date().toISOString().replace(/[:.]/g, \"-\") + \".json\";\n        var dir = recordingsDir;\n        try { if (typeof Util.makeDir === \"function\") Util.makeDir(dir); } catch (e0) {}\n        if (!Util.isDir(dir)) { dir = Util.settings(\"d6966670-f69f-48d0-96f6-72a5e2190cbc\").RootPath; name = \"tracking-zones-\" + name; }\n        var path = dir + \"/\" + name;\n        try { Util.writeFile(path, JSON.stringify({ version: 1, frames: frames })); lastRecordingPath = Util.fileExists(path) ? path : \"\"; statusText = lastRecordingPath ? (\"Saved \" + frames.length + \" frames to \" + path) : (\"Could not write \" + path); }\n        catch (e) { statusText = \"Could not save recording: \" + e; }\n    }\n    function loadRecording(path) {\n        try {\n            var txt = U.bufToString(Util.readFile(path));\n            var rec = JSON.parse(txt);\n            root.executionSend({ type: \"playback\", frames: rec.frames || [], loop: true, speed: 1, play: true });\n            statusText = \"Playing \" + (rec.frames || []).length + \" frames from \" + path;\n        } catch (e) { statusText = \"Could not load recording: \" + e; }\n    }\n    function playbackControl(action, value) { root.executionSend({ type: \"playbackControl\", action: action, value: value, position: value }); }\n\n    function updateTrails(entities) {\n        var tr = trails; var seen = {};\n        for (var i = 0; i < entities.length; i++) { var e = entities[i]; seen[e.key] = true; var a = tr[e.key]; if (!a) a = tr[e.key] = []; a.push([e.pos[0], e.pos[1]]); if (a.length > 40) a.splice(0, a.length - 40); }\n        for (var k in tr) if (!seen[k]) delete tr[k];\n    }\n\n    // ---------------- liveness + performance measurement ----------------\n    property int snapCount: 0\n    property int frameCount: 0\n    property var perfAcc: ({ snapMs: 0, snapN: 0, paintDynMs: 0, paintDynN: 0, paintStaticMs: 0, paintStaticN: 0, evMs: 0, evN: 0 })\n    property string perfDetail: \"\"\n    FrameAnimation { id: frameCounter; running: root.visible; onTriggered: root.frameCount++ }\n    Timer {\n        id: perfTimer; interval: 1000; repeat: true; running: true\n        property real lastWall: Date.now()\n        onTriggered: {\n            var now = Date.now(); var dt = Math.max(0.001, (now - lastWall) / 1000); lastWall = now;\n            root.perf = { tickMs: root.perf.tickMs, engineMs: root.perf.engineMs, tickHz: root.perf.tickHz, uiFps: root.frameCount / dt, snapshotHz: root.snapCount / dt };\n            var a = root.perfAcc; root.perfDetail = \"snapshot \" + (a.snapN ? (a.snapMs / a.snapN).toFixed(1) : \"-\") + \" ms, 2D paint \" + (a.paintDynN ? (a.paintDynMs / a.paintDynN).toFixed(1) : \"-\") + \" ms (static \" + (a.paintStaticN ? (a.paintStaticMs / a.paintStaticN).toFixed(1) : \"-\") + \"), events \" + a.evN + \"/s, dropped \" + root.droppedSnapshots; root.droppedSnapshots = 0; root.perfAcc = { snapMs: 0, snapN: 0, paintDynMs: 0, paintDynN: 0, paintStaticMs: 0, paintStaticN: 0, evMs: 0, evN: 0 };\n            root.frameCount = 0; root.snapCount = 0;\n            var live = (now - root.lastSnapshotWall) < 1500;\n            if (live !== root.liveData) { root.liveData = live; if (!live) { root.trails = ({}); } }\n        }\n    }\n    readonly property string perfText: \"UI \" + perf.uiFps.toFixed(0) + \" fps, snapshots \" + perf.snapshotHz.toFixed(0) + \" Hz, exec \" + perf.tickHz.toFixed(0) + \" Hz \" + perf.tickMs.toFixed(2) + \" ms/tick (engine \" + perf.engineMs.toFixed(2) + \")\" + (viewMode !== \"2d\" ? \", 3D \" + view3d.fps.toFixed(0) + \" fps\" : \"\") + \"   \" + perfDetail\n\n    // ---------------- keyboard ----------------\n    focus: true\n    Keys.onPressed: function (ev) {\n        if (ev.key === Qt.Key_Delete || ev.key === Qt.Key_Backspace) { deleteSelected(); ev.accepted = true; }\n        else if (ev.key === Qt.Key_Escape) { if (tool !== \"select\") tool = \"select\"; else selection = []; canvas2d.cancelDrawing(); ev.accepted = true; }\n        else if (ev.key === Qt.Key_D && (ev.modifiers & Qt.ControlModifier)) { duplicateSelected(); ev.accepted = true; }\n        else if (ev.key === Qt.Key_Z && (ev.modifiers & Qt.ControlModifier)) { if (ev.modifiers & Qt.ShiftModifier) Score.Editor.redo(); else Score.Editor.undo(); ev.accepted = true; }\n        else if (ev.key === Qt.Key_Y && (ev.modifiers & Qt.ControlModifier)) { Score.Editor.redo(); ev.accepted = true; }\n        else if (ev.key === Qt.Key_A && (ev.modifiers & Qt.ControlModifier)) { selection = doc.zones.map(function (z) { return z.id; }); ev.accepted = true; }\n        else if (ev.key === Qt.Key_Left) { moveSelected(-(ev.modifiers & Qt.ShiftModifier ? 1 : 0.1), 0); ev.accepted = true; }\n        else if (ev.key === Qt.Key_Right) { moveSelected((ev.modifiers & Qt.ShiftModifier ? 1 : 0.1), 0); ev.accepted = true; }\n        else if (ev.key === Qt.Key_Up) { moveSelected(0, (ev.modifiers & Qt.ShiftModifier ? 1 : 0.1)); ev.accepted = true; }\n        else if (ev.key === Qt.Key_Down) { moveSelected(0, -(ev.modifiers & Qt.ShiftModifier ? 1 : 0.1)); ev.accepted = true; }\n        else if (ev.key === Qt.Key_F) { canvas2d.fitAll(); ev.accepted = true; }\n        else if (ev.key === Qt.Key_G) { snapping = !snapping; ev.accepted = true; }\n        else if (ev.key === Qt.Key_1) { tool = \"select\"; ev.accepted = true; }\n        else if (ev.key === Qt.Key_2) { tool = \"rect\"; ev.accepted = true; }\n        else if (ev.key === Qt.Key_3) { tool = \"circle\"; ev.accepted = true; }\n        else if (ev.key === Qt.Key_4) { tool = \"polygon\"; ev.accepted = true; }\n        else if (ev.key === Qt.Key_5) { tool = \"line\"; ev.accepted = true; }\n        else if (ev.key === Qt.Key_6) { tool = \"path\"; ev.accepted = true; }\n        else if (ev.key === Qt.Key_7) { tool = \"sim\"; ev.accepted = true; }\n        else if (ev.key === Qt.Key_W) { gizmoMode = \"move\"; ev.accepted = true; }\n        else if (ev.key === Qt.Key_E) { gizmoMode = \"rotate\"; ev.accepted = true; }\n        else if (ev.key === Qt.Key_R) { gizmoMode = \"scale\"; ev.accepted = true; }\n        else if (ev.key === Qt.Key_Tab) { viewMode = viewMode === \"2d\" ? \"3d\" : (viewMode === \"3d\" ? \"split\" : \"2d\"); ev.accepted = true; }\n    }\n\n    Component.onCompleted: { root.forceActiveFocus(); sendPrefs(); }\n\n    // ---------------- layout ----------------\n    // The score skin now lives in the shared OssiaUI kit, so this editor and the\n    // mapper / text / presentation editors cannot drift apart.\n    S.ThemedPage {\n        anchors.fill: parent\n        ColumnLayout {\n            anchors.fill: parent\n            anchors.margins: 4\n            spacing: 4\n\n            TZToolbar { id: toolbar; owner: root; Layout.fillWidth: true }\n\n            SplitView {\n                Layout.fillWidth: true; Layout.fillHeight: true\n                orientation: Qt.Horizontal\n\n                TZZoneList { owner: root; SplitView.preferredWidth: 210; SplitView.minimumWidth: 150 }\n\n                Item {\n                    id: centre\n                    SplitView.fillWidth: true; SplitView.fillHeight: true\n                    SplitView.minimumWidth: 300\n                    clip: true\n                    property real splitRatio: 0.5\n                    readonly property bool split: root.viewMode === \"split\"\n                    TZCanvas2D { id: canvas2d; owner: root; visible: root.viewMode !== \"3d\"; anchors.left: parent.left; anchors.top: parent.top; anchors.bottom: parent.bottom; width: centre.split ? Math.round(centre.width * centre.splitRatio) - 3 : centre.width }\n                    TZView3D { id: view3d; owner: root; visible: root.viewMode !== \"2d\"; anchors.right: parent.right; anchors.top: parent.top; anchors.bottom: parent.bottom; width: centre.split ? centre.width - Math.round(centre.width * centre.splitRatio) - 3 : centre.width }\n                    Rectangle {   // draggable divider\n                        visible: centre.split; width: 6; anchors.top: parent.top; anchors.bottom: parent.bottom; x: Math.round(centre.width * centre.splitRatio) - 3\n                        color: divArea.pressed ? \"#c58014\" : (divArea.containsMouse ? \"#3a3835\" : \"#252930\")\n                        MouseArea { id: divArea; anchors.fill: parent; hoverEnabled: true; cursorShape: Qt.SplitHCursor; onPositionChanged: function (m) { if (pressed) { var nx = parent.x + m.x; centre.splitRatio = Math.max(0.2, Math.min(0.8, nx / centre.width)); } } }\n                    }\n                }\n\n                TZInspector { owner: root; SplitView.preferredWidth: 330; SplitView.minimumWidth: 260; SplitView.maximumWidth: 420 }\n            }\n\n            TZBottomPanel { id: bottom; owner: root; Layout.fillWidth: true; Layout.preferredHeight: root.bottomVisible ? root.bottomHeight : 28 }\n\n            RowLayout {\n                Layout.fillWidth: true\n                Label {\n                    Layout.fillWidth: true\n                    text: root.statusText.length ? root.statusText : (root.liveData && root.snapshot ? (\"entities: \" + root.snapshot.count + \"   zones: \" + root.doc.zones.length + (root.snapshot.activeSet ? \"   set: \" + root.snapshot.activeSet : \"\") + (root.recording ? \"   ● REC \" : \"\") + (root.playbackInfo ? \"   ▶ playback \" + U.fmtTime(root.playbackInfo.pos) + \"/\" + U.fmtTime(root.playbackInfo.duration) : \"\")) : \"Transport stopped.\")\n                    font.pixelSize: 11; color: palette.placeholderText; elide: Text.ElideRight\n                }\n                Label { text: root.perfText; font.pixelSize: 10; color: palette.placeholderText; font.family: \"monospace\" }\n            }\n            }\n    }\n}\n","State":[["tzDoc",{"String":"{\"version\":1,\"zones\":[{\"id\":\"z-mtt31dng-1368\",\"name\":\"Cell 1x1\",\"color\":\"#c58014\",\"enabled\":true,\"visible\":true,\"locked\":false,\"tags\":[],\"set\":\"\",\"group\":\"grid\",\"frame\":\"world\",\"frameRef\":\"\",\"pos\":[-1.3333333333333335,1,0],\"rot\":[0,0,0],\"shape\":{\"type\":\"rect\",\"w\":1.3333333333333333,\"h\":1,\"useZ\":false,\"zmin\":0,\"zmax\":2},\"role\":\"event\",\"anchor\":\"center\",\"containment\":\"point\",\"radius\":0.25,\"filters\":{\"cls\":\"\",\"tags\":\"\",\"sources\":[],\"minConf\":0,\"minAge\":0,\"heightMin\":0,\"heightMax\":0,\"speedMin\":0,\"speedMax\":0,\"maxCount\":0},\"hysteresis\":{\"margin\":0.05,\"enterMs\":0,\"exitMs\":0,\"enterFrames\":1,\"exitFrames\":1,\"holdMs\":0,\"cooldownMs\":0},\"dwell\":{\"loiterS\":0},\"occupancy\":{\"setThreshold\":1,\"clearThreshold\":0,\"capacity\":0},\"selection\":\"all\",\"maxN\":1,\"line\":{\"confirmFrames\":2,\"countOnce\":false},\"soft\":{\"enabled\":false,\"falloff\":0.5},\"stationary\":{\"speed\":0.1,\"timeS\":2},\"outputs\":{\"perId\":true,\"tree\":true},\"events\":{\"stationary\":false,\"first_in\":false,\"last_out\":false,\"capacity\":false,\"occupied\":false,\"transition\":false,\"count\":false,\"empty\":false,\"cross\":false,\"dwell\":false}},{\"id\":\"z-mtt31dng-2e4\",\"name\":\"Cell 1x2\",\"color\":\"#5b9bd5\",\"enabled\":true,\"visible\":true,\"locked\":false,\"tags\":[],\"set\":\"\",\"group\":\"grid\",\"frame\":\"world\",\"frameRef\":\"\",\"pos\":[0,1,0],\"rot\":[0,0,0],\"shape\":{\"type\":\"rect\",\"w\":1.3333333333333333,\"h\":1,\"useZ\":false,\"zmin\":0,\"zmax\":2},\"role\":\"event\",\"anchor\":\"center\",\"containment\":\"point\",\"radius\":0.25,\"filters\":{\"cls\":\"\",\"tags\":\"\",\"sources\":[],\"minConf\":0,\"minAge\":0,\"heightMin\":0,\"heightMax\":0,\"speedMin\":0,\"speedMax\":0,\"maxCount\":0},\"hysteresis\":{\"margin\":0.05,\"enterMs\":0,\"exitMs\":0,\"enterFrames\":1,\"exitFrames\":1,\"holdMs\":0,\"cooldownMs\":0},\"dwell\":{\"loiterS\":0},\"occupancy\":{\"setThreshold\":1,\"clearThreshold\":0,\"capacity\":0},\"selection\":\"all\",\"maxN\":1,\"line\":{\"confirmFrames\":2,\"countOnce\":false},\"soft\":{\"enabled\":false,\"falloff\":0.5},\"stationary\":{\"speed\":0.1,\"timeS\":2},\"outputs\":{\"perId\":true,\"tree\":true},\"events\":{\"stationary\":false,\"first_in\":false,\"last_out\":false,\"capacity\":false,\"occupied\":false,\"transition\":false,\"count\":false,\"empty\":false,\"cross\":false,\"dwell\":false}},{\"id\":\"z-mtt31dng-35ew\",\"name\":\"Cell 1x3\",\"color\":\"#7fc45a\",\"enabled\":true,\"visible\":true,\"locked\":false,\"tags\":[],\"set\":\"\",\"group\":\"grid\",\"frame\":\"world\",\"frameRef\":\"\",\"pos\":[1.333333333333333,1,0],\"rot\":[0,0,0],\"shape\":{\"type\":\"rect\",\"w\":1.3333333333333333,\"h\":1,\"useZ\":false,\"zmin\":0,\"zmax\":2},\"role\":\"event\",\"anchor\":\"center\",\"containment\":\"point\",\"radius\":0.25,\"filters\":{\"cls\":\"\",\"tags\":\"\",\"sources\":[],\"minConf\":0,\"minAge\":0,\"heightMin\":0,\"heightMax\":0,\"speedMin\":0,\"speedMax\":0,\"maxCount\":0},\"hysteresis\":{\"margin\":0.05,\"enterMs\":0,\"exitMs\":0,\"enterFrames\":1,\"exitFrames\":1,\"holdMs\":0,\"cooldownMs\":0},\"dwell\":{\"loiterS\":0},\"occupancy\":{\"setThreshold\":1,\"clearThreshold\":0,\"capacity\":0},\"selection\":\"all\",\"maxN\":1,\"line\":{\"confirmFrames\":2,\"countOnce\":false},\"soft\":{\"enabled\":false,\"falloff\":0.5},\"stationary\":{\"speed\":0.1,\"timeS\":2},\"outputs\":{\"perId\":true,\"tree\":true},\"events\":{\"stationary\":false,\"first_in\":false,\"last_out\":false,\"capacity\":false,\"occupied\":false,\"transition\":false,\"count\":false,\"empty\":false,\"cross\":false,\"dwell\":false}},{\"id\":\"z-mtt31dng-423b\",\"name\":\"Cell 2x1\",\"color\":\"#d96b6b\",\"enabled\":true,\"visible\":true,\"locked\":false,\"tags\":[],\"set\":\"\",\"group\":\"grid\",\"frame\":\"world\",\"frameRef\":\"\",\"pos\":[-1.3333333333333335,0,0],\"rot\":[0,0,0],\"shape\":{\"type\":\"rect\",\"w\":1.3333333333333333,\"h\":1,\"useZ\":false,\"zmin\":0,\"zmax\":2},\"role\":\"event\",\"anchor\":\"center\",\"containment\":\"point\",\"radius\":0.25,\"filters\":{\"cls\":\"\",\"tags\":\"\",\"sources\":[],\"minConf\":0,\"minAge\":0,\"heightMin\":0,\"heightMax\":0,\"speedMin\":0,\"speedMax\":0,\"maxCount\":0},\"hysteresis\":{\"margin\":0.05,\"enterMs\":0,\"exitMs\":0,\"enterFrames\":1,\"exitFrames\":1,\"holdMs\":0,\"cooldownMs\":0},\"dwell\":{\"loiterS\":0},\"occupancy\":{\"setThreshold\":1,\"clearThreshold\":0,\"capacity\":0},\"selection\":\"all\",\"maxN\":1,\"line\":{\"confirmFrames\":2,\"countOnce\":false},\"soft\":{\"enabled\":false,\"falloff\":0.5},\"stationary\":{\"speed\":0.1,\"timeS\":2},\"outputs\":{\"perId\":true,\"tree\":true},\"events\":{\"stationary\":false,\"first_in\":false,\"last_out\":false,\"capacity\":false,\"occupied\":false,\"transition\":false,\"count\":false,\"empty\":false,\"cross\":false,\"dwell\":false}},{\"id\":\"z-mtt31dng-554a\",\"name\":\"Cell 2x2\",\"color\":\"#9b7bd6\",\"enabled\":true,\"visible\":true,\"locked\":false,\"tags\":[],\"set\":\"\",\"group\":\"grid\",\"frame\":\"world\",\"frameRef\":\"\",\"pos\":[0,0,0],\"rot\":[0,0,0],\"shape\":{\"type\":\"rect\",\"w\":1.3333333333333333,\"h\":1,\"useZ\":false,\"zmin\":0,\"zmax\":2},\"role\":\"event\",\"anchor\":\"center\",\"containment\":\"point\",\"radius\":0.25,\"filters\":{\"cls\":\"\",\"tags\":\"\",\"sources\":[],\"minConf\":0,\"minAge\":0,\"heightMin\":0,\"heightMax\":0,\"speedMin\":0,\"speedMax\":0,\"maxCount\":0},\"hysteresis\":{\"margin\":0.05,\"enterMs\":0,\"exitMs\":0,\"enterFrames\":1,\"exitFrames\":1,\"holdMs\":0,\"cooldownMs\":0},\"dwell\":{\"loiterS\":0},\"occupancy\":{\"setThreshold\":1,\"clearThreshold\":0,\"capacity\":0},\"selection\":\"all\",\"maxN\":1,\"line\":{\"confirmFrames\":2,\"countOnce\":false},\"soft\":{\"enabled\":false,\"falloff\":0.5},\"stationary\":{\"speed\":0.1,\"timeS\":2},\"outputs\":{\"perId\":true,\"tree\":true},\"events\":{\"stationary\":false,\"first_in\":false,\"last_out\":false,\"capacity\":false,\"occupied\":false,\"transition\":false,\"count\":false,\"empty\":false,\"cross\":false,\"dwell\":false}},{\"id\":\"z-mtt31dng-66vl\",\"name\":\"Cell 2x3\",\"color\":\"#2bb3a3\",\"enabled\":true,\"visible\":true,\"locked\":false,\"tags\":[],\"set\":\"\",\"group\":\"grid\",\"frame\":\"world\",\"frameRef\":\"\",\"pos\":[1.333333333333333,0,0],\"rot\":[0,0,0],\"shape\":{\"type\":\"rect\",\"w\":1.3333333333333333,\"h\":1,\"useZ\":false,\"zmin\":0,\"zmax\":2},\"role\":\"event\",\"anchor\":\"center\",\"containment\":\"point\",\"radius\":0.25,\"filters\":{\"cls\":\"\",\"tags\":\"\",\"sources\":[],\"minConf\":0,\"minAge\":0,\"heightMin\":0,\"heightMax\":0,\"speedMin\":0,\"speedMax\":0,\"maxCount\":0},\"hysteresis\":{\"margin\":0.05,\"enterMs\":0,\"exitMs\":0,\"enterFrames\":1,\"exitFrames\":1,\"holdMs\":0,\"cooldownMs\":0},\"dwell\":{\"loiterS\":0},\"occupancy\":{\"setThreshold\":1,\"clearThreshold\":0,\"capacity\":0},\"selection\":\"all\",\"maxN\":1,\"line\":{\"confirmFrames\":2,\"countOnce\":false},\"soft\":{\"enabled\":false,\"falloff\":0.5},\"stationary\":{\"speed\":0.1,\"timeS\":2},\"outputs\":{\"perId\":true,\"tree\":true},\"events\":{\"stationary\":false,\"first_in\":false,\"last_out\":false,\"capacity\":false,\"occupied\":false,\"transition\":false,\"count\":false,\"empty\":false,\"cross\":false,\"dwell\":false}},{\"id\":\"z-mtt31dng-74m4\",\"name\":\"Cell 3x1\",\"color\":\"#e08cc7\",\"enabled\":true,\"visible\":true,\"locked\":false,\"tags\":[],\"set\":\"\",\"group\":\"grid\",\"frame\":\"world\",\"frameRef\":\"\",\"pos\":[-1.3333333333333335,-1,0],\"rot\":[0,0,0],\"shape\":{\"type\":\"rect\",\"w\":1.3333333333333333,\"h\":1,\"useZ\":false,\"zmin\":0,\"zmax\":2},\"role\":\"event\",\"anchor\":\"center\",\"containment\":\"point\",\"radius\":0.25,\"filters\":{\"cls\":\"\",\"tags\":\"\",\"sources\":[],\"minConf\":0,\"minAge\":0,\"heightMin\":0,\"heightMax\":0,\"speedMin\":0,\"speedMax\":0,\"maxCount\":0},\"hysteresis\":{\"margin\":0.05,\"enterMs\":0,\"exitMs\":0,\"enterFrames\":1,\"exitFrames\":1,\"holdMs\":0,\"cooldownMs\":0},\"dwell\":{\"loiterS\":0},\"occupancy\":{\"setThreshold\":1,\"clearThreshold\":0,\"capacity\":0},\"selection\":\"all\",\"maxN\":1,\"line\":{\"confirmFrames\":2,\"countOnce\":false},\"soft\":{\"enabled\":false,\"falloff\":0.5},\"stationary\":{\"speed\":0.1,\"timeS\":2},\"outputs\":{\"perId\":true,\"tree\":true},\"events\":{\"stationary\":false,\"first_in\":false,\"last_out\":false,\"capacity\":false,\"occupied\":false,\"transition\":false,\"count\":false,\"empty\":false,\"cross\":false,\"dwell\":false}},{\"id\":\"z-mtt31dng-868g\",\"name\":\"Cell 3x2\",\"color\":\"#c7b24d\",\"enabled\":true,\"visible\":true,\"locked\":false,\"tags\":[],\"set\":\"\",\"group\":\"grid\",\"frame\":\"world\",\"frameRef\":\"\",\"pos\":[0,-1,0],\"rot\":[0,0,0],\"shape\":{\"type\":\"rect\",\"w\":1.3333333333333333,\"h\":1,\"useZ\":false,\"zmin\":0,\"zmax\":2},\"role\":\"event\",\"anchor\":\"center\",\"containment\":\"point\",\"radius\":0.25,\"filters\":{\"cls\":\"\",\"tags\":\"\",\"sources\":[],\"minConf\":0,\"minAge\":0,\"heightMin\":0,\"heightMax\":0,\"speedMin\":0,\"speedMax\":0,\"maxCount\":0},\"hysteresis\":{\"margin\":0.05,\"enterMs\":0,\"exitMs\":0,\"enterFrames\":1,\"exitFrames\":1,\"holdMs\":0,\"cooldownMs\":0},\"dwell\":{\"loiterS\":0},\"occupancy\":{\"setThreshold\":1,\"clearThreshold\":0,\"capacity\":0},\"selection\":\"all\",\"maxN\":1,\"line\":{\"confirmFrames\":2,\"countOnce\":false},\"soft\":{\"enabled\":false,\"falloff\":0.5},\"stationary\":{\"speed\":0.1,\"timeS\":2},\"outputs\":{\"perId\":true,\"tree\":true},\"events\":{\"stationary\":false,\"first_in\":false,\"last_out\":false,\"capacity\":false,\"occupied\":false,\"transition\":false,\"count\":false,\"empty\":false,\"cross\":false,\"dwell\":false}},{\"id\":\"z-mtt31dng-92v9\",\"name\":\"Cell 3x3\",\"color\":\"#4dc0e0\",\"enabled\":true,\"visible\":true,\"locked\":false,\"tags\":[],\"set\":\"\",\"group\":\"grid\",\"frame\":\"world\",\"frameRef\":\"\",\"pos\":[1.333333333333333,-1,0],\"rot\":[0,0,0],\"shape\":{\"type\":\"rect\",\"w\":1.3333333333333333,\"h\":1,\"useZ\":false,\"zmin\":0,\"zmax\":2},\"role\":\"event\",\"anchor\":\"center\",\"containment\":\"point\",\"radius\":0.25,\"filters\":{\"cls\":\"\",\"tags\":\"\",\"sources\":[],\"minConf\":0,\"minAge\":0,\"heightMin\":0,\"heightMax\":0,\"speedMin\":0,\"speedMax\":0,\"maxCount\":0},\"hysteresis\":{\"margin\":0.05,\"enterMs\":0,\"exitMs\":0,\"enterFrames\":1,\"exitFrames\":1,\"holdMs\":0,\"cooldownMs\":0},\"dwell\":{\"loiterS\":0},\"occupancy\":{\"setThreshold\":1,\"clearThreshold\":0,\"capacity\":0},\"selection\":\"all\",\"maxN\":1,\"line\":{\"confirmFrames\":2,\"countOnce\":false},\"soft\":{\"enabled\":false,\"falloff\":0.5},\"stationary\":{\"speed\":0.1,\"timeS\":2},\"outputs\":{\"perId\":true,\"tree\":true},\"events\":{\"stationary\":false,\"first_in\":false,\"last_out\":false,\"capacity\":false,\"occupied\":false,\"transition\":false,\"count\":false,\"empty\":false,\"cross\":false,\"dwell\":false}}],\"sets\":[],\"groups\":[],\"sources\":[{\"enabled\":true,\"name\":\"Source 1\",\"units\":\"m\",\"unitScale\":1,\"axes\":\"xyz\",\"axisSpec\":\"\",\"flipX\":false,\"flipY\":true,\"flipZ\":false,\"originMode\":\"world\",\"scene\":{\"w\":4,\"h\":3},\"pixels\":{\"w\":1920,\"h\":1080,\"mpp\":0.002},\"transform\":{\"pos\":[-2,1,0],\"rot\":[0,0,0],\"scale\":[4,3,2]},\"homography\":null,\"idMode\":\"auto\",\"dataFormat\":\"auto\",\"idPrefix\":\"\",\"defaultZ\":0,\"cls\":\"\",\"tag\":\"\",\"lostTimeout\":0.5,\"smoothing\":{\"enabled\":false,\"minCutoff\":1,\"beta\":0.02},\"maxJump\":0,\"flatStride\":0},{\"enabled\":true,\"name\":\"Source 2\",\"units\":\"m\",\"unitScale\":1,\"axes\":\"xyz\",\"axisSpec\":\"\",\"flipX\":false,\"flipY\":false,\"flipZ\":false,\"originMode\":\"world\",\"scene\":{\"w\":4,\"h\":3},\"pixels\":{\"w\":1920,\"h\":1080,\"mpp\":0.002},\"transform\":{\"pos\":[0,0,0],\"rot\":[0,0,0],\"scale\":[1,1,1]},\"homography\":null,\"idMode\":\"auto\",\"dataFormat\":\"auto\",\"idPrefix\":\"\",\"defaultZ\":0,\"cls\":\"\",\"tag\":\"\",\"lostTimeout\":0.5,\"smoothing\":{\"enabled\":false,\"minCutoff\":1,\"beta\":0.02},\"maxJump\":0,\"flatStride\":0},{\"enabled\":true,\"name\":\"Source 3\",\"units\":\"m\",\"unitScale\":1,\"axes\":\"xyz\",\"axisSpec\":\"\",\"flipX\":false,\"flipY\":false,\"flipZ\":false,\"originMode\":\"world\",\"scene\":{\"w\":4,\"h\":3},\"pixels\":{\"w\":1920,\"h\":1080,\"mpp\":0.002},\"transform\":{\"pos\":[0,0,0],\"rot\":[0,0,0],\"scale\":[1,1,1]},\"homography\":null,\"idMode\":\"auto\",\"dataFormat\":\"auto\",\"idPrefix\":\"\",\"defaultZ\":0,\"cls\":\"\",\"tag\":\"\",\"lostTimeout\":0.5,\"smoothing\":{\"enabled\":false,\"minCutoff\":1,\"beta\":0.02},\"maxJump\":0,\"flatStride\":0},{\"enabled\":true,\"name\":\"Source 4\",\"units\":\"m\",\"unitScale\":1,\"axes\":\"xyz\",\"axisSpec\":\"\",\"flipX\":false,\"flipY\":false,\"flipZ\":false,\"originMode\":\"world\",\"scene\":{\"w\":4,\"h\":3},\"pixels\":{\"w\":1920,\"h\":1080,\"mpp\":0.002},\"transform\":{\"pos\":[0,0,0],\"rot\":[0,0,0],\"scale\":[1,1,1]},\"homography\":null,\"idMode\":\"auto\",\"dataFormat\":\"auto\",\"idPrefix\":\"\",\"defaultZ\":0,\"cls\":\"\",\"tag\":\"\",\"lostTimeout\":0.5,\"smoothing\":{\"enabled\":false,\"minCutoff\":1,\"beta\":0.02},\"maxJump\":0,\"flatStride\":0}],\"settings\":{\"activeSet\":\"\",\"uiRate\":30,\"lostTimeout\":0.5,\"heatmap\":{\"enabled\":false,\"x\":0,\"y\":0,\"w\":8,\"h\":6,\"cols\":16,\"rows\":12,\"decay\":0.2},\"units\":\"m\",\"upAxis\":\"z\",\"worldTransform\":{\"pos\":[0,0,0],\"rot\":[0,0,0]},\"showMode\":false,\"proximity\":{\"enabled\":false,\"distance\":1,\"crossSourcesOnly\":false},\"backdrop\":{\"path\":\"\",\"x\":0,\"y\":0,\"w\":10,\"h\":7.5,\"opacity\":0.5,\"rotation\":0},\"grid\":1,\"monitor\":{\"maxEvents\":400,\"maxEventsPerSec\":100},\"events\":{\"enter\":true,\"exit\":true,\"dwell\":false,\"stationary\":false,\"transition\":false,\"cross\":false,\"first_in\":false,\"occupied\":false,\"empty\":false,\"last_out\":false,\"capacity\":false,\"count\":false,\"proximity\":false},\"outputs\":{\"enter\":{\"enabled\":true,\"format\":\"map\"},\"exit\":{\"enabled\":true,\"format\":\"map\"},\"dwell\":{\"enabled\":true,\"format\":\"map\"},\"cross\":{\"enabled\":true,\"format\":\"map\"},\"occupancy\":{\"enabled\":true,\"format\":\"map\"},\"location\":{\"enabled\":true,\"format\":\"map\",\"all\":false,\"onChange\":true,\"includeOutside\":false}}}}"}]],"Root":"<LIBRARY>:packages/default/Presets/Javascript/tracking-zones/tracking-zones.qml","Inlets":[{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Source 1","Exposed":"source 1"},{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":1,"Hidden":false,"Custom":"Source 2","Exposed":"source 2"},{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":2,"Hidden":false,"Custom":"Source 3","Exposed":"source 3"},{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":3,"Hidden":false,"Custom":"Source 4","Exposed":"source 4"},{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":4,"Hidden":false,"Custom":"Command","Exposed":"command"},{"uuid":"9ae797ea-d94c-4792-acec-9ec1932bae5d","ObjectName":"Inlet","id":5,"Hidden":true,"Custom":"Active Set","Exposed":"active set","Value":{"String":""},"Init":{"String":""},"Domain":{}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":6,"Hidden":true,"Custom":"Bypass","Exposed":"bypass","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":7,"Hidden":true,"Custom":"Simulation","Exposed":"simulation","Value":{"Bool":true},"Init":{"Bool":true},"Domain":{"Bool":null}},{"uuid":"7cd210d3-ebd1-4f71-9de6-cccfb639cbc3","ObjectName":"Inlet","id":8,"Hidden":true,"Custom":"Reset Counters","Exposed":"reset counters","Value":{"Impulse":null},"Init":{"Impulse":null},"Domain":{"Impulse":null}}],"Outlets":[{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Zones","Exposed":"zones"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":1,"Hidden":false,"Custom":"Events","Exposed":"events"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":2,"Hidden":false,"Custom":"Entities","Exposed":"entities"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":3,"Hidden":false,"Custom":"Counts","Exposed":"counts"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":4,"Hidden":false,"Custom":"Occupied","Exposed":"occupied"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":5,"Hidden":false,"Custom":"Activity","Exposed":"activity"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":6,"Hidden":false,"Custom":"Tree","Exposed":"tree"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":7,"Hidden":false,"Custom":"Count","Exposed":"count"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":8,"Hidden":false,"Custom":"Heatmap","Exposed":"heatmap"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":9,"Hidden":false,"Custom":"Proximity","Exposed":"proximity"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":10,"Hidden":false,"Custom":"Enter","Exposed":"enter"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":11,"Hidden":false,"Custom":"Leave","Exposed":"leave"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":12,"Hidden":false,"Custom":"Dwell","Exposed":"dwell"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":13,"Hidden":false,"Custom":"Cross","Exposed":"cross"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":14,"Hidden":false,"Custom":"Occupancy","Exposed":"occupancy"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":15,"Hidden":false,"Custom":"Location","Exposed":"location"}]},{"uuid":"0e64750a-d014-44d9-9a4e-919d4305af1a","ObjectName":"lightness_sample","id":4,"Metadata":{"ScriptingName":"Lightness sampler","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[412.59,-195.39099999999996],"Size":[200.0,200.0],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"5ac86198-2d03-4830-9e41-a6d529922d29","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"In","Exposed":"in","Format":0,"Filter":2,"AddressMode":1},{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":1,"Hidden":false,"Custom":"Positions","Exposed":"positions"}],"Outlets":[{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Samples","Exposed":"samples"}]},{"uuid":"7be51631-fb4b-4152-9ca7-86fdafa8a989","ObjectName":"Display","id":5,"Metadata":{"ScriptingName":"Text Box","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[-139.64286170487128,-306.13986938588613],"Size":[464.0,218.0],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"9ae797ea-d94c-4792-acec-9ec1932bae5d","ObjectName":"Inlet","id":0,"Hidden":true,"Custom":"in","Exposed":"in","Value":{"String":"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n<html><head><meta name=\"qrichtext\" content=\"1\" /><meta charset=\"utf-8\" /><style type=\"text/css\">\np, li { white-space: pre-wrap; }\nhr { height: 1px; border-width: 0; }\nli.unchecked::marker { content: \"\\2610\"; }\nli.checked::marker { content: \"\\2612\"; }\n</style></head><body style=\" font-family:'Ubuntu'; font-size:13px; font-weight:400; font-style:normal;\">\n<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:12px;\">This example shows how to use tracking-zones, a simple </span></p>\n<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:12px;\">object to allow triggering actions in 2D or 3D according to<br />zones defined in a graphical environment.<br /><br />The sources can understand most tracking data sources<br />than score can emit: <br />- Tracked points through Pose Detector. Right now the first<br />outlet is connected ; if using a model / configuration that supports <br />multi-pose detection then use the third outlet to have each pose independent.<br />- Raw series of keypoints, e.g. [x,y,x,y,x,y] or [x,y,z,x,y,z,x,y,z] - the second outlet <br />of PoseDetector or any raw &quot;unformatted&quot; keypoint data without tracking <br />information<br />- Input from the various tracking devices and protocols supported: TUIO, OptiTrack<br />etc.<br />- Input from the Point Tracker 2D / 3D<br />etc.</span></p></body></html>"},"Init":{"String":"(Double-click to edit)"},"Domain":{}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Auto-reflow","Exposed":"auto-reflow","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}}],"Outlets":[]},{"uuid":"3f4a41f2-fa39-420f-ab0f-0af6b8409edb","ObjectName":"Display","id":6,"Metadata":{"ScriptingName":"Value display","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[785.519344818971,-128.86468659293718],"Size":[200.0,100.0],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":0,"Hidden":true,"Custom":"Input","Exposed":"input","Description":"Values to display, including every event in a tick."},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Log","Exposed":"log","Description":"Number of recent values to retain, newest first.","Value":{"Int":1},"Init":{"Int":1},"Domain":{"Int":{"Min":1,"Max":100}}},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Format","Exposed":"format","Description":"Ordinary text, indented Pretty text, or Hex bytes. Hex shows raw string bytes, including UTF-8 bytes, NUL and high-bit bytes. Numbers must be exact integers from 0 to 255; booleans are 00 or 01. Flat numeric lists and vectors use one byte per element. Empty strings and lists show [empty]. Other values show [not byte data] followed by ordinary text; no wrapping, truncation or memory reinterpretation.","Value":{"Int":1},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1,2]}},"Values":[["Ordinary",{"Int":0}],["Pretty",{"Int":1}],["Hex",{"Int":2}]],"FolderPort":"","FileExtensions":""}],"Outlets":[{"uuid":"3620ea94-5991-41cf-89b3-11f842cc39d0","ObjectName":"Outlet","id":0,"Hidden":true,"Custom":"values","Exposed":"values","Description":"Recent values and their sequence number for the display.","Value":{"Tuple":[{"Int":2445},{"Tuple":[{"Map":[["active",{"Bool":true}],["activity",{"Int":0}],["all_ids",{"Tuple":[]}],["centroid",{"Vec3f":[0.0,0.0,0.0]}],["count",{"Int":0}],["crossings",{"Int":0}],["crossings_in",{"Int":0}],["crossings_out",{"Int":0}],["dwell_max",{"Int":0}],["dwell_mean",{"Int":0}],["dwell_now",{"Int":0}],["entered",{"Tuple":[]}],["exited",{"Tuple":[]}],["first_in",{"String":""}],["id",{"String":"z-mtt31dng-1368"}],["idle",{"Float":6.519999980926514}],["ids",{"Tuple":[]}],["last_out",{"String":""}],["name",{"String":"Cell 1x1"}],["nearest",{"String":""}],["nearest_dist",{"Int":-1}],["occupied",{"Bool":false}],["occupied_for",{"Int":0}],["type",{"String":"rect"}],["unique",{"Int":0}],["visits",{"Int":0}],["weight",{"Int":0}]]},{"Map":[["active",{"Bool":true}],["activity",{"Int":0}],["all_ids",{"Tuple":[]}],["centroid",{"Vec3f":[0.0,0.0,0.0]}],["count",{"Int":0}],["crossings",{"Int":0}],["crossings_in",{"Int":0}],["crossings_out",{"Int":0}],["dwell_max",{"Int":0}],["dwell_mean",{"Int":0}],["dwell_now",{"Int":0}],["entered",{"Tuple":[]}],["exited",{"Tuple":[]}],["first_in",{"String":""}],["id",{"String":"z-mtt31dng-2e4"}],["idle",{"Float":6.519999980926514}],["ids",{"Tuple":[]}],["last_out",{"String":""}],["name",{"String":"Cell 1x2"}],["nearest",{"String":""}],["nearest_dist",{"Int":-1}],["occupied",{"Bool":false}],["occupied_for",{"Int":0}],["type",{"String":"rect"}],["unique",{"Int":0}],["visits",{"Int":0}],["weight",{"Int":0}]]},{"Map":[["active",{"Bool":true}],["activity",{"Int":0}],["all_ids",{"Tuple":[]}],["centroid",{"Vec3f":[0.0,0.0,0.0]}],["count",{"Int":0}],["crossings",{"Int":0}],["crossings_in",{"Int":0}],["crossings_out",{"Int":0}],["dwell_max",{"Int":0}],["dwell_mean",{"Int":0}],["dwell_now",{"Int":0}],["entered",{"Tuple":[]}],["exited",{"Tuple":[]}],["first_in",{"String":""}],["id",{"String":"z-mtt31dng-35ew"}],["idle",{"Float":6.519999980926514}],["ids",{"Tuple":[]}],["last_out",{"String":""}],["name",{"String":"Cell 1x3"}],["nearest",{"String":""}],["nearest_dist",{"Int":-1}],["occupied",{"Bool":false}],["occupied_for",{"Int":0}],["type",{"String":"rect"}],["unique",{"Int":0}],["visits",{"Int":0}],["weight",{"Int":0}]]},{"Map":[["active",{"Bool":true}],["activity",{"Int":0}],["all_ids",{"Tuple":[]}],["centroid",{"Vec3f":[0.0,0.0,0.0]}],["count",{"Int":0}],["crossings",{"Int":0}],["crossings_in",{"Int":0}],["crossings_out",{"Int":0}],["dwell_max",{"Float":0.41600000858306885}],["dwell_mean",{"Int":0}],["dwell_now",{"Int":0}],["entered",{"Tuple":[]}],["exited",{"Tuple":[]}],["first_in",{"String":""}],["id",{"String":"z-mtt31dng-423b"}],["idle",{"Float":1.8480000495910645}],["ids",{"Tuple":[]}],["last_out",{"String":"0"}],["name",{"String":"Cell 2x1"}],["nearest",{"String":""}],["nearest_dist",{"Int":-1}],["occupied",{"Bool":false}],["occupied_for",{"Int":0}],["type",{"String":"rect"}],["unique",{"Int":1}],["visits",{"Int":1}],["weight",{"Int":0}]]},{"Map":[["active",{"Bool":true}],["activity",{"Int":0}],["all_ids",{"Tuple":[]}],["centroid",{"Vec3f":[0.0,0.0,0.0]}],["count",{"Int":0}],["crossings",{"Int":0}],["crossings_in",{"Int":0}],["crossings_out",{"Int":0}],["dwell_max",{"Float":0.8266666531562805}],["dwell_mean",{"Int":0}],["dwell_now",{"Int":0}],["entered",{"Tuple":[]}],["exited",{"Tuple":[]}],["first_in",{"String":""}],["id",{"String":"z-mtt31dng-554a"}],["idle",{"Float":1.2719999551773071}],["ids",{"Tuple":[]}],["last_out",{"String":"0"}],["name",{"String":"Cell 2x2"}],["nearest",{"String":""}],["nearest_dist",{"Int":-1}],["occupied",{"Bool":false}],["occupied_for",{"Int":0}],["type",{"String":"rect"}],["unique",{"Int":1}],["visits",{"Int":3}],["weight",{"Int":0}]]},{"Map":[["active",{"Bool":true}],["activity",{"Float":0.18239398300647736}],["all_ids",{"Tuple":[{"String":"0"}]}],["centroid",{"Vec3f":[0.8834657669067383,-0.1568363904953003,0.0]}],["count",{"Int":1}],["crossings",{"Int":0}],["crossings_in",{"Int":0}],["crossings_out",{"Int":0}],["dwell_max",{"Float":1.871999979019165}],["dwell_mean",{"Float":1.2719999551773071}],["dwell_now",{"Float":1.2719999551773071}],["entered",{"Tuple":[]}],["exited",{"Tuple":[]}],["first_in",{"String":"0"}],["id",{"String":"z-mtt31dng-66vl"}],["idle",{"Int":0}],["ids",{"Tuple":[{"String":"0"}]}],["last_out",{"String":"0"}],["name",{"String":"Cell 2x3"}],["nearest",{"String":"0"}],["nearest_dist",{"Float":-0.21679909527301788}],["occupied",{"Bool":true}],["occupied_for",{"Float":1.2719999551773071}],["per_id",{"Tuple":[{"Map":[["angle",{"Float":-160.78001403808594}],["dist",{"Float":0.21679909527301788}],["dwell",{"Float":1.2719999551773071}],["id",{"String":"0"}],["offset",{"Int":0}],["pos",{"Vec3f":[0.8834657669067383,-0.1568363904953003,0.0]}],["progress",{"Int":0}],["r",{"Float":0.7146338820457458}],["speed",{"Float":0.18239398300647736}],["u",{"Float":0.1625993251800537}],["v",{"Float":0.3431636095046997}],["w",{"Float":0.5}],["weight",{"Int":1}]]}]}],["type",{"String":"rect"}],["unique",{"Int":1}],["visits",{"Int":2}],["weight",{"Int":1}]]},{"Map":[["active",{"Bool":true}],["activity",{"Int":0}],["all_ids",{"Tuple":[]}],["centroid",{"Vec3f":[0.0,0.0,0.0]}],["count",{"Int":0}],["crossings",{"Int":0}],["crossings_in",{"Int":0}],["crossings_out",{"Int":0}],["dwell_max",{"Int":0}],["dwell_mean",{"Int":0}],["dwell_now",{"Int":0}],["entered",{"Tuple":[]}],["exited",{"Tuple":[]}],["first_in",{"String":""}],["id",{"String":"z-mtt31dng-74m4"}],["idle",{"Float":6.519999980926514}],["ids",{"Tuple":[]}],["last_out",{"String":""}],["name",{"String":"Cell 3x1"}],["nearest",{"String":""}],["nearest_dist",{"Int":-1}],["occupied",{"Bool":false}],["occupied_for",{"Int":0}],["type",{"String":"rect"}],["unique",{"Int":0}],["visits",{"Int":0}],["weight",{"Int":0}]]},{"Map":[["active",{"Bool":true}],["activity",{"Int":0}],["all_ids",{"Tuple":[]}],["centroid",{"Vec3f":[0.0,0.0,0.0]}],["count",{"Int":0}],["crossings",{"Int":0}],["crossings_in",{"Int":0}],["crossings_out",{"Int":0}],["dwell_max",{"Int":0}],["dwell_mean",{"Int":0}],["dwell_now",{"Int":0}],["entered",{"Tuple":[]}],["exited",{"Tuple":[]}],["first_in",{"String":""}],["id",{"String":"z-mtt31dng-868g"}],["idle",{"Float":6.519999980926514}],["ids",{"Tuple":[]}],["last_out",{"String":""}],["name",{"String":"Cell 3x2"}],["nearest",{"String":""}],["nearest_dist",{"Int":-1}],["occupied",{"Bool":false}],["occupied_for",{"Int":0}],["type",{"String":"rect"}],["unique",{"Int":0}],["visits",{"Int":0}],["weight",{"Int":0}]]},{"Map":[["active",{"Bool":true}],["activity",{"Int":0}],["all_ids",{"Tuple":[]}],["centroid",{"Vec3f":[0.0,0.0,0.0]}],["count",{"Int":0}],["crossings",{"Int":0}],["crossings_in",{"Int":0}],["crossings_out",{"Int":0}],["dwell_max",{"Int":0}],["dwell_mean",{"Int":0}],["dwell_now",{"Int":0}],["entered",{"Tuple":[]}],["exited",{"Tuple":[]}],["first_in",{"String":""}],["id",{"String":"z-mtt31dng-92v9"}],["idle",{"Float":6.519999980926514}],["ids",{"Tuple":[]}],["last_out",{"String":""}],["name",{"String":"Cell 3x3"}],["nearest",{"String":""}],["nearest_dist",{"Int":-1}],["occupied",{"Bool":false}],["occupied_for",{"Int":0}],["type",{"String":"rect"}],["unique",{"Int":0}],["visits",{"Int":0}],["weight",{"Int":0}]]}]}]},"Domain":{}}]},{"uuid":"3f4a41f2-fa39-420f-ab0f-0af6b8409edb","ObjectName":"Display","id":7,"Metadata":{"ScriptingName":"Value display.8","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[1008.2058353657852,-128.7033267238268],"Size":[279.6113787324798,152.49101894449217],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":0,"Hidden":true,"Custom":"Input","Exposed":"input","Description":"Values to display, including every event in a tick."},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Log","Exposed":"log","Description":"Number of recent values to retain, newest first.","Value":{"Int":5},"Init":{"Int":1},"Domain":{"Int":{"Min":1,"Max":100}}},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Format","Exposed":"format","Description":"Ordinary text, indented Pretty text, or Hex bytes. Hex shows raw string bytes, including UTF-8 bytes, NUL and high-bit bytes. Numbers must be exact integers from 0 to 255; booleans are 00 or 01. Flat numeric lists and vectors use one byte per element. Empty strings and lists show [empty]. Other values show [not byte data] followed by ordinary text; no wrapping, truncation or memory reinterpretation.","Value":{"Int":1},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1,2]}},"Values":[["Ordinary",{"Int":0}],["Pretty",{"Int":1}],["Hex",{"Int":2}]],"FolderPort":"","FileExtensions":""}],"Outlets":[{"uuid":"3620ea94-5991-41cf-89b3-11f842cc39d0","ObjectName":"Outlet","id":0,"Hidden":true,"Custom":"values","Exposed":"values","Description":"Recent values and their sequence number for the display.","Value":{"Tuple":[{"Int":5},{"Tuple":[{"Map":[["id",{"String":"0"}],["src",{"Int":0}],["t",{"Float":4.258666515350342}],["type",{"String":"enter"}],["zone",{"String":"Cell 2x1"}],["zone_id",{"String":"z-mtt31dng-423b"}]]}]},{"Tuple":[{"Map":[["dwell",{"Float":0.7680000066757202}],["id",{"String":"0"}],["lost",{"Bool":false}],["src",{"Int":0}],["t",{"Float":4.306666851043701}],["type",{"String":"exit"}],["zone",{"String":"Cell 2x2"}],["zone_id",{"String":"z-mtt31dng-554a"}]]}]},{"Tuple":[{"Map":[["id",{"String":"0"}],["src",{"Int":0}],["t",{"Float":4.658666610717773}],["type",{"String":"enter"}],["zone",{"String":"Cell 2x2"}],["zone_id",{"String":"z-mtt31dng-554a"}]]}]},{"Tuple":[{"Map":[["dwell",{"Float":0.41600000858306885}],["id",{"String":"0"}],["lost",{"Bool":false}],["src",{"Int":0}],["t",{"Float":4.674666881561279}],["type",{"String":"exit"}],["zone",{"String":"Cell 2x1"}],["zone_id",{"String":"z-mtt31dng-423b"}]]}]},{"Tuple":[{"Map":[["dwell",{"Float":0.5920000076293945}],["id",{"String":"0"}],["lost",{"Bool":false}],["src",{"Int":0}],["t",{"Float":5.250666618347168}],["type",{"String":"exit"}],["zone",{"String":"Cell 2x2"}],["zone_id",{"String":"z-mtt31dng-554a"}]]},{"Map":[["id",{"String":"0"}],["src",{"Int":0}],["t",{"Float":5.250666618347168}],["type",{"String":"enter"}],["zone",{"String":"Cell 2x3"}],["zone_id",{"String":"z-mtt31dng-66vl"}]]}]}]},"Domain":{}}]},{"uuid":"3f4a41f2-fa39-420f-ab0f-0af6b8409edb","ObjectName":"Display","id":8,"Metadata":{"ScriptingName":"Value display.9","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[856.5247359264645,81.4853275167534],"Size":[868.7492894873196,362.89741564264926],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":0,"Hidden":true,"Custom":"Input","Exposed":"input","Description":"Values to display, including every event in a tick."},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Log","Exposed":"log","Description":"Number of recent values to retain, newest first.","Value":{"Int":1},"Init":{"Int":1},"Domain":{"Int":{"Min":1,"Max":100}}},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Format","Exposed":"format","Description":"Ordinary text, indented Pretty text, or Hex bytes. Hex shows raw string bytes, including UTF-8 bytes, NUL and high-bit bytes. Numbers must be exact integers from 0 to 255; booleans are 00 or 01. Flat numeric lists and vectors use one byte per element. Empty strings and lists show [empty]. Other values show [not byte data] followed by ordinary text; no wrapping, truncation or memory reinterpretation.","Value":{"Int":1},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1,2]}},"Values":[["Ordinary",{"Int":0}],["Pretty",{"Int":1}],["Hex",{"Int":2}]],"FolderPort":"","FileExtensions":""}],"Outlets":[{"uuid":"3620ea94-5991-41cf-89b3-11f842cc39d0","ObjectName":"Outlet","id":0,"Hidden":true,"Custom":"values","Exposed":"values","Description":"Recent values and their sequence number for the display.","Value":{"Tuple":[{"Int":2445},{"Tuple":[{"Map":[["age",{"Float":5.570666790008545}],["cls",{"String":"-1"}],["conf",{"Float":0.9947687387466431}],["heading",{"Int":0}],["height",{"Int":0}],["id",{"String":"0"}],["key",{"String":"s0:0"}],["masked",{"Bool":false}],["name",{"String":""}],["pos",{"Vec3f":[0.8834657669067383,-0.1568363904953003,0.0]}],["size",{"Tuple":[{"Float":0.2602189779281616},{"Float":0.44682079553604126},{"Int":0}]}],["speed",{"Float":0.18239398300647736}],["src",{"Int":0}],["state",{"String":"lost"}],["stationary",{"Bool":false}],["vel",{"Vec3f":[-0.15255063772201538,-0.09997934103012085,0.0]}],["zone_data",{"Map":[["Cell 2x3",{"Map":[["dist",{"Float":0.21679909527301788}],["dwell",{"Float":1.2719999551773071}],["offset",{"Int":0}],["progress",{"Int":0}],["u",{"Float":0.1625993251800537}],["v",{"Float":0.3431636095046997}],["w",{"Float":0.5}],["weight",{"Int":1}]]}]]}],["zones",{"Tuple":[{"String":"Cell 2x3"}]}]]}]}]},"Domain":{}}]},{"uuid":"4cf2f89f-45b6-4878-92ff-23d3cee1c67e","ObjectName":"object_filter","id":9,"Metadata":{"ScriptingName":"Object filter","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[1018.6009634906164,-326.6458015095105],"Size":[227.0,70.0],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Input","Exposed":"input"},{"uuid":"9ae797ea-d94c-4792-acec-9ec1932bae5d","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Filter","Exposed":"filter","Value":{"String":".[] | select(.type == \"enter\") | .zone"},"Init":{"String":""},"Domain":{}}],"Outlets":[{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"bang","Exposed":"bang","Address":"zones:/enter"}]},{"uuid":"4cf2f89f-45b6-4878-92ff-23d3cee1c67e","ObjectName":"object_filter","id":11,"Metadata":{"ScriptingName":"Object filter.1","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[1019.965308743333,-217.34958999921665],"Size":[227.0,70.0],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Input","Exposed":"input"},{"uuid":"9ae797ea-d94c-4792-acec-9ec1932bae5d","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Filter","Exposed":"filter","Value":{"String":".[] | select(.type == \"exit\") | .zone"},"Init":{"String":""},"Domain":{}}],"Outlets":[{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"bang","Exposed":"bang","Address":"zones:/exit"}]},{"uuid":"3f4a41f2-fa39-420f-ab0f-0af6b8409edb","ObjectName":"Display","id":12,"Metadata":{"ScriptingName":"Value display.10","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[853.7194882981194,457.8107734630743],"Size":[517.3663305650043,35.69870895385378],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":0,"Hidden":true,"Custom":"Input","Exposed":"input","Description":"Values to display, including every event in a tick."},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Log","Exposed":"log","Description":"Number of recent values to retain, newest first.","Value":{"Int":1},"Init":{"Int":1},"Domain":{"Int":{"Min":1,"Max":100}}},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Format","Exposed":"format","Description":"Ordinary text, indented Pretty text, or Hex bytes. Hex shows raw string bytes, including UTF-8 bytes, NUL and high-bit bytes. Numbers must be exact integers from 0 to 255; booleans are 00 or 01. Flat numeric lists and vectors use one byte per element. Empty strings and lists show [empty]. Other values show [not byte data] followed by ordinary text; no wrapping, truncation or memory reinterpretation.","Value":{"Int":1},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1,2]}},"Values":[["Ordinary",{"Int":0}],["Pretty",{"Int":1}],["Hex",{"Int":2}]],"FolderPort":"","FileExtensions":""}],"Outlets":[{"uuid":"3620ea94-5991-41cf-89b3-11f842cc39d0","ObjectName":"Outlet","id":0,"Hidden":true,"Custom":"values","Exposed":"values","Description":"Recent values and their sequence number for the display.","Value":{"Tuple":[{"Int":5},{"Map":[["id",{"String":"0"}],["src",{"Int":0}],["type",{"String":"enter"}],["zone",{"String":"Cell 2x3"}]]}]},"Domain":{}}]},{"uuid":"7be51631-fb4b-4152-9ca7-86fdafa8a989","ObjectName":"Display","id":13,"Metadata":{"ScriptingName":"Text Box.14","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[1011.7140556851328,-403.0490020140334],"Size":[365.0,47.0],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"9ae797ea-d94c-4792-acec-9ec1932bae5d","ObjectName":"Inlet","id":0,"Hidden":true,"Custom":"in","Exposed":"in","Value":{"String":"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n<html><head><meta name=\"qrichtext\" content=\"1\" /><meta charset=\"utf-8\" /><style type=\"text/css\">\np, li { white-space: pre-wrap; }\nhr { height: 1px; border-width: 0; }\nli.unchecked::marker { content: \"\\2610\"; }\nli.checked::marker { content: \"\\2612\"; }\n</style></head><body style=\" font-family:'Ubuntu'; font-size:13px; font-weight:400; font-style:normal;\">\n<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:12px;\">Advanced examples of selecting all the zones<br />for which &quot;type&quot; == &quot;enter&quot;or &quot;exit&quot;, and sending them over OSC<br />Note that it's simpler to use the dedicated inlets below.</span></p></body></html>"},"Init":{"String":"(Double-click to edit)"},"Domain":{}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Auto-reflow","Exposed":"auto-reflow","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}}],"Outlets":[]},{"uuid":"e9f0a1b2-3c4d-5e6f-7a8b-9c0d1e2f3a4b","ObjectName":"fomo","id":20,"Metadata":{"ScriptingName":"Port of Spain","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[2428.6592059124614,-139.27313675729354],"Size":[445.0,635.0],"Loops":false,"FoldMode":2,"Inlets":[{"uuid":"c18adc77-e0e0-4ddf-a46c-43cb0719a890","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"MIDI","Exposed":"midi"},{"uuid":"25de6d71-1554-4fe1-bf3f-9cbf12bdadeb","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Matrix","Exposed":"matrix","Value":{"Tuple":[{"Float":0.0},{"Float":0.41833001375198364},{"Float":0.0},{"Float":0.0},{"Float":1.0},{"Float":0.0},{"Float":0.0},{"Float":0.0},{"Float":0.0},{"Float":0.0},{"Float":0.0},{"Float":0.0},{"Float":0.0},{"Float":0.2958039939403534},{"Float":0.875},{"Float":0.0},{"Float":0.0},{"Float":0.0},{"Float":0.0},{"Float":0.0}]},"Init":{"Tuple":[]},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Op 1 Ratio","Exposed":"op 1 ratio","Value":{"Float":1.0},"Init":{"Float":1.0},"Domain":{"Float":{"Min":0.5,"Max":32.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"Op 1 Fixed Hz","Exposed":"op 1 fixed hz","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":8000.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":4,"Hidden":true,"Custom":"Op 1 Detune","Exposed":"op 1 detune","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-100.0,"Max":100.0}}},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":5,"Hidden":true,"Custom":"Op 1 Wave","Exposed":"op 1 wave","Value":{"String":"Sine"},"Init":{"String":"Sine"},"Domain":{"String":{"Values":["Sine","HalfSine","Saw","Square"]}},"Values":["Sine","HalfSine","Saw","Square"],"Pixmaps":[]},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":6,"Hidden":true,"Custom":"Op 1 Attack","Exposed":"op 1 attack","Value":{"Float":0.003000000026077032},"Init":{"Float":0.009999999776482582},"Domain":{"Float":{"Min":0.0010000000474974513,"Max":4.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":7,"Hidden":true,"Custom":"Op 1 Decay","Exposed":"op 1 decay","Value":{"Float":1.600000023841858},"Init":{"Float":0.30000001192092896},"Domain":{"Float":{"Min":0.0010000000474974513,"Max":8.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":8,"Hidden":true,"Custom":"Op 1 Sustain","Exposed":"op 1 sustain","Value":{"Float":0.05000000074505806},"Init":{"Float":0.699999988079071},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":9,"Hidden":true,"Custom":"Op 1 Release","Exposed":"op 1 release","Value":{"Float":0.8999999761581421},"Init":{"Float":0.4000000059604645},"Domain":{"Float":{"Min":0.0010000000474974513,"Max":8.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":10,"Hidden":true,"Custom":"Op 1 Vel Depth","Exposed":"op 1 vel depth","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":11,"Hidden":true,"Custom":"Op 1 KLS Break","Exposed":"op 1 kls break","Value":{"Float":60.0},"Init":{"Float":60.0},"Domain":{"Float":{"Min":0.0,"Max":127.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":12,"Hidden":true,"Custom":"Op 1 KLS dB/oct","Exposed":"op 1 kls db_oct","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-24.0,"Max":24.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":13,"Hidden":true,"Custom":"Op 1 Key Rate","Exposed":"op 1 key rate","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":2.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":14,"Hidden":true,"Custom":"Op 1 AM Depth","Exposed":"op 1 am depth","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":15,"Hidden":true,"Custom":"Op 1 Phase","Exposed":"op 1 phase","Value":{"String":"Reset"},"Init":{"String":"Reset"},"Domain":{"String":{"Values":["Reset","Free"]}},"Values":["Reset","Free"],"Pixmaps":[]},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":16,"Hidden":true,"Custom":"Op 2 Ratio","Exposed":"op 2 ratio","Value":{"Float":2.0},"Init":{"Float":2.0},"Domain":{"Float":{"Min":0.5,"Max":32.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":17,"Hidden":true,"Custom":"Op 2 Fixed Hz","Exposed":"op 2 fixed hz","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":8000.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":18,"Hidden":true,"Custom":"Op 2 Detune","Exposed":"op 2 detune","Value":{"Float":8.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-100.0,"Max":100.0}}},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":19,"Hidden":true,"Custom":"Op 2 Wave","Exposed":"op 2 wave","Value":{"String":"Sine"},"Init":{"String":"Sine"},"Domain":{"String":{"Values":["Sine","HalfSine","Saw","Square"]}},"Values":["Sine","HalfSine","Saw","Square"],"Pixmaps":[]},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":20,"Hidden":true,"Custom":"Op 2 Attack","Exposed":"op 2 attack","Value":{"Float":0.0020000000949949026},"Init":{"Float":0.009999999776482582},"Domain":{"Float":{"Min":0.0010000000474974513,"Max":4.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":21,"Hidden":true,"Custom":"Op 2 Decay","Exposed":"op 2 decay","Value":{"Float":0.6000000238418579},"Init":{"Float":0.30000001192092896},"Domain":{"Float":{"Min":0.0010000000474974513,"Max":8.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":22,"Hidden":true,"Custom":"Op 2 Sustain","Exposed":"op 2 sustain","Value":{"Float":0.10000000149011612},"Init":{"Float":0.699999988079071},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":23,"Hidden":true,"Custom":"Op 2 Release","Exposed":"op 2 release","Value":{"Float":0.4000000059604645},"Init":{"Float":0.4000000059604645},"Domain":{"Float":{"Min":0.0010000000474974513,"Max":8.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":24,"Hidden":true,"Custom":"Op 2 Vel Depth","Exposed":"op 2 vel depth","Value":{"Float":0.6000000238418579},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":25,"Hidden":true,"Custom":"Op 2 KLS Break","Exposed":"op 2 kls break","Value":{"Float":60.0},"Init":{"Float":60.0},"Domain":{"Float":{"Min":0.0,"Max":127.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":26,"Hidden":true,"Custom":"Op 2 KLS dB/oct","Exposed":"op 2 kls db_oct","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-24.0,"Max":24.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":27,"Hidden":true,"Custom":"Op 2 Key Rate","Exposed":"op 2 key rate","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":2.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":28,"Hidden":true,"Custom":"Op 2 AM Depth","Exposed":"op 2 am depth","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":29,"Hidden":true,"Custom":"Op 2 Phase","Exposed":"op 2 phase","Value":{"String":"Reset"},"Init":{"String":"Reset"},"Domain":{"String":{"Values":["Reset","Free"]}},"Values":["Reset","Free"],"Pixmaps":[]},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":30,"Hidden":true,"Custom":"Op 3 Ratio","Exposed":"op 3 ratio","Value":{"Float":1.0},"Init":{"Float":3.0},"Domain":{"Float":{"Min":0.5,"Max":32.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":31,"Hidden":true,"Custom":"Op 3 Fixed Hz","Exposed":"op 3 fixed hz","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":8000.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":32,"Hidden":true,"Custom":"Op 3 Detune","Exposed":"op 3 detune","Value":{"Float":-9.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-100.0,"Max":100.0}}},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":33,"Hidden":true,"Custom":"Op 3 Wave","Exposed":"op 3 wave","Value":{"String":"Sine"},"Init":{"String":"Sine"},"Domain":{"String":{"Values":["Sine","HalfSine","Saw","Square"]}},"Values":["Sine","HalfSine","Saw","Square"],"Pixmaps":[]},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":34,"Hidden":true,"Custom":"Op 3 Attack","Exposed":"op 3 attack","Value":{"Float":0.004000000189989805},"Init":{"Float":0.009999999776482582},"Domain":{"Float":{"Min":0.0010000000474974513,"Max":4.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":35,"Hidden":true,"Custom":"Op 3 Decay","Exposed":"op 3 decay","Value":{"Float":1.2999999523162842},"Init":{"Float":0.30000001192092896},"Domain":{"Float":{"Min":0.0010000000474974513,"Max":8.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":36,"Hidden":true,"Custom":"Op 3 Sustain","Exposed":"op 3 sustain","Value":{"Float":0.05000000074505806},"Init":{"Float":0.699999988079071},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":37,"Hidden":true,"Custom":"Op 3 Release","Exposed":"op 3 release","Value":{"Float":0.800000011920929},"Init":{"Float":0.4000000059604645},"Domain":{"Float":{"Min":0.0010000000474974513,"Max":8.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":38,"Hidden":true,"Custom":"Op 3 Vel Depth","Exposed":"op 3 vel depth","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":39,"Hidden":true,"Custom":"Op 3 KLS Break","Exposed":"op 3 kls break","Value":{"Float":60.0},"Init":{"Float":60.0},"Domain":{"Float":{"Min":0.0,"Max":127.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":40,"Hidden":true,"Custom":"Op 3 KLS dB/oct","Exposed":"op 3 kls db_oct","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-24.0,"Max":24.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":41,"Hidden":true,"Custom":"Op 3 Key Rate","Exposed":"op 3 key rate","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":2.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":42,"Hidden":true,"Custom":"Op 3 AM Depth","Exposed":"op 3 am depth","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":43,"Hidden":true,"Custom":"Op 3 Phase","Exposed":"op 3 phase","Value":{"String":"Reset"},"Init":{"String":"Reset"},"Domain":{"String":{"Values":["Reset","Free"]}},"Values":["Reset","Free"],"Pixmaps":[]},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":44,"Hidden":true,"Custom":"Op 4 Ratio","Exposed":"op 4 ratio","Value":{"Float":6.0},"Init":{"Float":4.0},"Domain":{"Float":{"Min":0.5,"Max":32.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":45,"Hidden":true,"Custom":"Op 4 Fixed Hz","Exposed":"op 4 fixed hz","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":8000.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":46,"Hidden":true,"Custom":"Op 4 Detune","Exposed":"op 4 detune","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-100.0,"Max":100.0}}},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":47,"Hidden":true,"Custom":"Op 4 Wave","Exposed":"op 4 wave","Value":{"String":"Sine"},"Init":{"String":"Sine"},"Domain":{"String":{"Values":["Sine","HalfSine","Saw","Square"]}},"Values":["Sine","HalfSine","Saw","Square"],"Pixmaps":[]},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":48,"Hidden":true,"Custom":"Op 4 Attack","Exposed":"op 4 attack","Value":{"Float":0.0010000000474974513},"Init":{"Float":0.009999999776482582},"Domain":{"Float":{"Min":0.0010000000474974513,"Max":4.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":49,"Hidden":true,"Custom":"Op 4 Decay","Exposed":"op 4 decay","Value":{"Float":0.18000000715255737},"Init":{"Float":0.30000001192092896},"Domain":{"Float":{"Min":0.0010000000474974513,"Max":8.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":50,"Hidden":true,"Custom":"Op 4 Sustain","Exposed":"op 4 sustain","Value":{"Float":0.0},"Init":{"Float":0.699999988079071},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":51,"Hidden":true,"Custom":"Op 4 Release","Exposed":"op 4 release","Value":{"Float":0.15000000596046448},"Init":{"Float":0.4000000059604645},"Domain":{"Float":{"Min":0.0010000000474974513,"Max":8.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":52,"Hidden":true,"Custom":"Op 4 Vel Depth","Exposed":"op 4 vel depth","Value":{"Float":0.8999999761581421},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":53,"Hidden":true,"Custom":"Op 4 KLS Break","Exposed":"op 4 kls break","Value":{"Float":60.0},"Init":{"Float":60.0},"Domain":{"Float":{"Min":0.0,"Max":127.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":54,"Hidden":true,"Custom":"Op 4 KLS dB/oct","Exposed":"op 4 kls db_oct","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-24.0,"Max":24.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":55,"Hidden":true,"Custom":"Op 4 Key Rate","Exposed":"op 4 key rate","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":2.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":56,"Hidden":true,"Custom":"Op 4 AM Depth","Exposed":"op 4 am depth","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":57,"Hidden":true,"Custom":"Op 4 Phase","Exposed":"op 4 phase","Value":{"String":"Reset"},"Init":{"String":"Reset"},"Domain":{"String":{"Values":["Reset","Free"]}},"Values":["Reset","Free"],"Pixmaps":[]},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":58,"Hidden":true,"Custom":"Pitch Atk","Exposed":"pitch atk","Value":{"Float":0.019999999552965164},"Init":{"Float":0.019999999552965164},"Domain":{"Float":{"Min":0.0010000000474974513,"Max":4.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":59,"Hidden":true,"Custom":"Pitch Dcy","Exposed":"pitch dcy","Value":{"Float":0.15000000596046448},"Init":{"Float":0.15000000596046448},"Domain":{"Float":{"Min":0.0010000000474974513,"Max":4.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":60,"Hidden":true,"Custom":"Pitch Depth","Exposed":"pitch depth","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-24.0,"Max":24.0}}},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":61,"Hidden":true,"Custom":"LFO Shape","Exposed":"lfo shape","Value":{"String":"Triangle"},"Init":{"String":"Triangle"},"Domain":{"String":{"Values":["Triangle","Sine","SawDown","SawUp","Square","SampleHold"]}},"Values":["Triangle","Sine","SawDown","SawUp","Square","SampleHold"],"Pixmaps":[]},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":62,"Hidden":true,"Custom":"LFO Rate","Exposed":"lfo rate","Value":{"Float":5.0},"Init":{"Float":5.0},"Domain":{"Float":{"Min":0.009999999776482582,"Max":40.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":63,"Hidden":true,"Custom":"LFO Delay","Exposed":"lfo delay","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":4.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":64,"Hidden":true,"Custom":"LFO Pitch","Exposed":"lfo pitch","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":12.0}}},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":65,"Hidden":true,"Custom":"Antialias","Exposed":"antialias","Value":{"String":"Wavetable"},"Init":{"String":"Wavetable"},"Domain":{"String":{"Values":["Wavetable","ADAA"]}},"Values":["Wavetable","ADAA"],"Pixmaps":[]},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":66,"Hidden":true,"Custom":"Index Limit","Exposed":"index limit","Value":{"Float":1.0},"Init":{"Float":1.0},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":67,"Hidden":true,"Custom":"Gain","Exposed":"gain","Value":{"Float":0.14792899787425995},"Init":{"Float":0.25},"Domain":{"Float":{"Min":0.0,"Max":1.0}}}],"Outlets":[{"uuid":"a1d97535-18ac-444a-8417-0cbc1692d897","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Audio Out","Exposed":"audio out","GainInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10000,"Hidden":false,"Custom":"Gain","Exposed":"gain","Value":{},"Init":{},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},"PanInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10001,"Hidden":false,"Custom":"Pan","Exposed":"pan","Value":{},"Init":{},"Domain":{}},"Gain":1.0,"Pan":[1.0,1.0],"Propagate":false}]},{"uuid":"25c64b87-a44a-4fed-9f60-0a48906fd3ec","ObjectName":"MicroMapping","id":29,"Metadata":{"ScriptingName":"Micromap","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[3033.687542813685,-112.2728133229829],"Size":[180.0,35.0],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"in","Exposed":"in"},{"uuid":"9ae797ea-d94c-4792-acec-9ec1932bae5d","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Expression","Exposed":"expression","Value":{"String":"5x+1"},"Init":{"String":"x / 127"},"Domain":{}}],"Outlets":[{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"out","Exposed":"out"}]},{"uuid":"5354c61a-1649-4f59-b952-5c2f1b79c1bd","ObjectName":"Faust","id":30,"Metadata":{"ScriptingName":"smoothDelay","Comment":"","Color":"Transparent1","Label":"smoothDelay","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[3259.9664226227037,-147.07754456638193],"Size":[148.0,164.0],"Loops":false,"FoldMode":2,"Text":"declare name \t\"smoothDelay\";\ndeclare author \t\"Yann Orlarey\";\ndeclare copyright \"Grame\";\ndeclare version \"1.0\";\ndeclare license \"STK-4.3\";\n\n//--------------------------process----------------------------\n//\n// \tA stereo smooth delay with a feedback control\n//  \n//\tThis example shows how to use sdelay, a delay that doesn't\n//  click and doesn't transpose when the delay time is changed\n//-------------------------------------------------------------\n\nimport(\"stdfaust.lib\");\n\nprocess = par(i, 2, voice)\n\twith { \n\t\tvoice \t= (+ : de.sdelay(N, interp, dtime)) ~ *(fback);\n\t\tN \t\t= int(2^19); \n\t\tinterp \t= hslider(\"interpolation[unit:ms][style:knob]\",10,1,100,0.1)*ma.SR/1000.0; \n\t\tdtime\t= hslider(\"delay[unit:ms][style:knob]\", 0, 0, 5000, 0.1)*ma.SR/1000.0;\n\t\tfback \t= hslider(\"feedback[style:knob]\",0,0,100,0.1)/100.0; \n\t};\n\n\n","Path":"<LIBRARY>:packages/default/Presets/Faust/delayEcho","Inlets":[{"uuid":"a1574bb0-cbd4-4c7d-9417-0c25cfd1187b","ObjectName":"Inlet","id":1,"Hidden":false,"Custom":"Audio In","Exposed":"audio in"},{"uuid":"82427d27-084a-4ab6-9c4e-db83929a1200","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"delay","Exposed":"delay","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":5000.0}}},{"uuid":"82427d27-084a-4ab6-9c4e-db83929a1200","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"feedback","Exposed":"feedback","Value":{"Float":92.50408935546875},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":100.0}}},{"uuid":"82427d27-084a-4ab6-9c4e-db83929a1200","ObjectName":"Inlet","id":4,"Hidden":true,"Custom":"interpolation","Exposed":"interpolation","Value":{"Float":10.0},"Init":{"Float":10.0},"Domain":{"Float":{"Min":1.0,"Max":100.0}}}],"Outlets":[{"uuid":"a1d97535-18ac-444a-8417-0cbc1692d897","ObjectName":"Outlet","id":1,"Hidden":false,"Custom":"Audio Out","Exposed":"audio out","GainInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":20000,"Hidden":false,"Custom":"Gain","Exposed":"gain","Value":{},"Init":{},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},"PanInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":20001,"Hidden":false,"Custom":"Pan","Exposed":"pan","Value":{},"Init":{},"Domain":{}},"Gain":1.0,"Pan":[1.0,1.0],"Propagate":false}]},{"uuid":"9906e563-ddeb-4ecd-908c-952baee2a0a5","ObjectName":"SignalDisplay","id":31,"Metadata":{"ScriptingName":"Signal display.1","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[2681.769028315787,-676.7176166347706],"Size":[213.87985669531415,133.31165606875317],"Loops":true,"FoldMode":0,"Inlets":[{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":0,"Hidden":true,"Custom":"in","Exposed":"in","Value":{},"Init":{},"Domain":{}}],"Outlets":[{"uuid":"3620ea94-5991-41cf-89b3-11f842cc39d0","ObjectName":"Outlet","id":0,"Hidden":true,"Custom":"out","Exposed":"out","Value":{"Tuple":[{"Float":0.434844434261322},{"Float":0.0}]},"Domain":{}}]},{"uuid":"415785fe-a7d8-4e62-a85f-9dfccf7dcd96","ObjectName":"Airwindows","id":32,"Metadata":{"ScriptingName":"IronOxideClassic2","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[3453.9664226227037,-147.07754456638193],"Size":[162.0,125.0],"Loops":false,"FoldMode":0,"PluginName":"IronOxideClassic2","Version":2,"Inlets":[{"uuid":"a1574bb0-cbd4-4c7d-9417-0c25cfd1187b","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Audio In","Exposed":"audio in"},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Input Trim (dB)","Exposed":"input trim (db)","Value":{"Float":11.945963859558105},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-18.0,"Max":18.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Tape Speed (ips)","Exposed":"tape speed (ips)","Value":{"Float":16.350000381469727},"Init":{"Float":16.350000381469727},"Domain":{"Float":{"Min":1.5,"Max":150.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"Output Trim (dB)","Exposed":"output trim (db)","Value":{"Float":-9.250448226928711},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-18.0,"Max":18.0}}}],"Outlets":[{"uuid":"a1d97535-18ac-444a-8417-0cbc1692d897","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Audio Out","Exposed":"audio out","GainInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10000,"Hidden":false,"Custom":"Gain","Exposed":"gain","Value":{},"Init":{},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},"PanInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10001,"Hidden":false,"Custom":"Pan","Exposed":"pan","Value":{},"Init":{},"Domain":{}},"Gain":1.0,"Pan":[1.0,1.0],"Propagate":false}]},{"uuid":"415785fe-a7d8-4e62-a85f-9dfccf7dcd96","ObjectName":"Airwindows","id":34,"Metadata":{"ScriptingName":"Lowpass2","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[3663.966422622704,-147.07754456638193],"Size":[144.0,160.0],"Loops":false,"FoldMode":2,"PluginName":"Lowpass2","Version":2,"Inlets":[{"uuid":"a1574bb0-cbd4-4c7d-9417-0c25cfd1187b","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"Audio In","Exposed":"audio in"},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Lowpass","Exposed":"lowpass","Value":{"Float":0.4307229518890381},"Init":{"Float":0.0},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Sft/Hrd","Exposed":"sft_hrd","Value":{"Float":-0.5104209780693054},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-1.0,"Max":1.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"Poles","Exposed":"poles","Value":{"Float":1.0},"Init":{"Float":1.0},"Domain":{"Float":{"Min":0.0,"Max":4.0}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":4,"Hidden":true,"Custom":"Dry/Wet","Exposed":"dry_wet","Value":{"Float":1.0},"Init":{"Float":1.0},"Domain":{"Float":{"Min":0.0,"Max":1.0}}}],"Outlets":[{"uuid":"a1d97535-18ac-444a-8417-0cbc1692d897","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Audio Out","Exposed":"audio out","GainInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10000,"Hidden":false,"Custom":"Gain","Exposed":"gain","Value":{},"Init":{},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},"PanInlet":{"uuid":"9a13fb32-269a-47bf-99a9-930188c1f19c","ObjectName":"Inlet","id":10001,"Hidden":false,"Custom":"Pan","Exposed":"pan","Value":{},"Init":{},"Domain":{}},"Gain":1.0,"Pan":[1.0,1.0],"Propagate":true}]},{"uuid":"7be51631-fb4b-4152-9ca7-86fdafa8a989","ObjectName":"Display","id":35,"Metadata":{"ScriptingName":"Text Box.15","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[1660.0908733265494,-204.37452750140432],"Size":[321.0,34.0],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"9ae797ea-d94c-4792-acec-9ec1932bae5d","ObjectName":"Inlet","id":0,"Hidden":true,"Custom":"in","Exposed":"in","Value":{"String":"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n<html><head><meta name=\"qrichtext\" content=\"1\" /><meta charset=\"utf-8\" /><style type=\"text/css\">\np, li { white-space: pre-wrap; }\nhr { height: 1px; border-width: 0; }\nli.unchecked::marker { content: \"\\2610\"; }\nli.checked::marker { content: \"\\2612\"; }\n</style></head><body style=\" font-family:'Ubuntu'; font-size:13px; font-weight:400; font-style:normal;\">\n<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:12px;\">This part of the patch is a simple synth </span></p>\n<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:12px;\">that react on the OSC message sent by the tracking part.</span></p></body></html>"},"Init":{"String":"(Double-click to edit)"},"Domain":{}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Auto-reflow","Exposed":"auto-reflow","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}}],"Outlets":[]},{"uuid":"a2b6c7f1-3d54-4e9a-9c21-8f0d5e73b104","ObjectName":"MidiDisplay","id":16,"Metadata":{"ScriptingName":"MIDI display","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[2090.9667870540516,-278.1018903423509],"Size":[200.0,100.0],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"c18adc77-e0e0-4ddf-a46c-43cb0719a890","ObjectName":"Inlet","id":0,"Hidden":true,"Custom":"in","Exposed":"in"},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Window","Exposed":"window","Value":{"Float":8.0},"Init":{"Float":8.0},"Domain":{"Float":{"Min":0.5,"Max":60.0}}}],"Outlets":[{"uuid":"3620ea94-5991-41cf-89b3-11f842cc39d0","ObjectName":"Outlet","id":0,"Hidden":true,"Custom":"events","Exposed":"events","Value":{"Tuple":[{"Float":6.514666557312012},{"Float":1.0},{"Float":0.0},{"Float":8.0},{"Float":6.0},{"Float":128.0},{"Float":72.0},{"Float":0.0},{"Float":0.0},{"Float":9.0},{"Float":6.0},{"Float":128.0},{"Float":48.0},{"Float":0.0},{"Float":0.0},{"Float":10.0},{"Float":6.0},{"Float":128.0},{"Float":38.0},{"Float":0.0},{"Float":0.0}]},"Domain":{}}]},{"uuid":"e58cf441-0106-4862-8abf-c3cee072f861","ObjectName":"midi_envelope","id":18,"Metadata":{"ScriptingName":"Midi Envelope","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[2090.351946152565,-504.22303859806743],"Size":[562.0,203.5],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"c18adc77-e0e0-4ddf-a46c-43cb0719a890","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"MIDI","Exposed":"midi"},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Envelope","Exposed":"envelope","Description":"Envelope stages. Curve modes use the drawn curve as the shape.","Value":{"Int":5},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1,2,3,4,5,6]}},"Values":[["ADSR",{"Int":0}],["AD",{"Int":1}],["AHD",{"Int":2}],["AHDSR",{"Int":3}],["DAHDSR",{"Int":4}],["Curve",{"Int":5}],["CurveSustain",{"Int":6}]],"FolderPort":"","FileExtensions":""},{"uuid":"87421d82-9727-4faa-b053-a372ea5fd2df","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Curve","Exposed":"curve","Description":"Envelope shape in Curve modes, output transfer function otherwise","Value":{"Tuple":[{"Tuple":[{"Vec2f":[0.0,0.0]},{"Vec2f":[1.0,1.0]},{"Float":1.0}]}]},"Init":{},"Domain":{},"Domain":{},"Curve":{"ObjectName":"CurveModel","id":0,"Segments":[{"uuid":"1e7cb83f-4e47-4b14-814d-2242a9c75991","ObjectName":"CurveSegmentModel","id":0,"Previous":null,"Following":null,"Start":[0.0,0.0],"End":[1.0,1.0],"Power":1.0}]}},{"uuid":"b631d9b7-cbe3-4d9c-b470-f139e348aecb","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"Delay","Exposed":"delay","Description":"Time before the attack starts (DAHDSR only)","Value":{"Float":0.0},"Init":{"Vec2f":[0.0,1.0]},"Domain":{"Vec2f":{"Min":[0.0,0.0],"Max":[10.0,1.0],"Values":[[],[]]}}},{"uuid":"b631d9b7-cbe3-4d9c-b470-f139e348aecb","ObjectName":"Inlet","id":4,"Hidden":true,"Custom":"Attack","Exposed":"attack","Value":{"Float":0.009999999776482582},"Init":{"Vec2f":[0.009999999776482582,1.0]},"Domain":{"Vec2f":{"Min":[0.0,0.0],"Max":[20.0,1.0],"Values":[[],[]]}}},{"uuid":"b631d9b7-cbe3-4d9c-b470-f139e348aecb","ObjectName":"Inlet","id":5,"Hidden":true,"Custom":"Hold","Exposed":"hold","Description":"Time spent at the peak before decaying (AHD, AHDSR, DAHDSR)","Value":{"Float":0.0},"Init":{"Vec2f":[0.0,1.0]},"Domain":{"Vec2f":{"Min":[0.0,0.0],"Max":[20.0,1.0],"Values":[[],[]]}}},{"uuid":"b631d9b7-cbe3-4d9c-b470-f139e348aecb","ObjectName":"Inlet","id":6,"Hidden":true,"Custom":"Decay","Exposed":"decay","Value":{"Float":0.20000000298023224},"Init":{"Vec2f":[0.20000000298023224,1.0]},"Domain":{"Vec2f":{"Min":[0.0,0.0],"Max":[20.0,1.0],"Values":[[],[]]}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":7,"Hidden":true,"Custom":"Sustain","Exposed":"sustain","Description":"Level held while the note is down, relative to the peak","Value":{"Float":0.699999988079071},"Init":{"Float":0.699999988079071},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"b631d9b7-cbe3-4d9c-b470-f139e348aecb","ObjectName":"Inlet","id":8,"Hidden":true,"Custom":"Release","Exposed":"release","Value":{"Float":0.30000001192092896},"Init":{"Vec2f":[0.30000001192092896,1.0]},"Domain":{"Vec2f":{"Min":[0.0,0.0],"Max":[20.0,1.0],"Values":[[],[]]}}},{"uuid":"b631d9b7-cbe3-4d9c-b470-f139e348aecb","ObjectName":"Inlet","id":9,"Hidden":true,"Custom":"Curve duration","Exposed":"curve duration","Description":"Time taken to traverse the drawn curve (Curve modes)","Value":{"Vec2f":[0.5,1.0]},"Init":{"Vec2f":[1.0,1.0]},"Domain":{"Vec2f":{"Min":[0.0010000000474974513,0.0],"Max":[60.0,1.0],"Values":[[],[]]}}},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":10,"Hidden":true,"Custom":"Sustain point","Exposed":"sustain point","Description":"Position in the drawn curve held while the note is down","Value":{"Float":0.5},"Init":{"Float":0.5},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"82427d27-084a-4ab6-9c4e-db83929a1200","ObjectName":"Inlet","id":11,"Hidden":true,"Custom":"Attack curve","Exposed":"attack curve","Description":"Negative: fast then slow. Positive: slow then fast.","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-1.0,"Max":1.0}}},{"uuid":"82427d27-084a-4ab6-9c4e-db83929a1200","ObjectName":"Inlet","id":12,"Hidden":true,"Custom":"Decay curve","Exposed":"decay curve","Description":"Shape of the decay and release segments","Value":{"Float":-0.5},"Init":{"Float":-0.5},"Domain":{"Float":{"Min":-1.0,"Max":1.0}}},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":13,"Hidden":true,"Custom":"Trigger","Exposed":"trigger","Description":"Retrigger: restart from the current level. Reset: restart from zero. Legato: do not restart if a note is already held.","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1,2]}},"Values":[["Retrigger",{"Int":0}],["Reset",{"Int":1}],["Legato",{"Int":2}]],"FolderPort":"","FileExtensions":""},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":14,"Hidden":true,"Custom":"Voicing","Exposed":"voicing","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1]}},"Values":[["Mono",{"Int":0}],["Poly",{"Int":1}]],"FolderPort":"","FileExtensions":""},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":15,"Hidden":true,"Custom":"Voices","Exposed":"voices","Description":"Number of voices in polyphonic mode","Value":{"Int":8},"Init":{"Int":8},"Domain":{"Int":{"Min":1,"Max":32}}},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":16,"Hidden":true,"Custom":"Note priority","Exposed":"note priority","Description":"Which of the held notes drives the envelope in mono mode","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1,2,3]}},"Values":[["Last",{"Int":0}],["First",{"Int":1}],["Lowest",{"Int":2}],["Highest",{"Int":3}]],"FolderPort":"","FileExtensions":""},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":17,"Hidden":true,"Custom":"Combine","Exposed":"combine","Description":"How the voices are summarized on the Out port","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Values":[0,1,2,3]}},"Values":[["Max",{"Int":0}],["Sum",{"Int":1}],["Average",{"Int":2}],["Latest",{"Int":3}]],"FolderPort":"","FileExtensions":""},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":18,"Hidden":true,"Custom":"Channel","Exposed":"channel","Description":"MIDI channel (0 = all)","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Min":0,"Max":16}}},{"uuid":"73ae3e85-0c91-497e-b612-b1391f87ac72","ObjectName":"Inlet","id":19,"Hidden":true,"Custom":"Key range","Exposed":"key range","Description":"Only notes within this range trigger the envelope","Value":{"Vec2f":[0.0,127.0]},"Init":{"Vec2f":[0.0,127.0]},"Domain":{"Float":{"Min":0.0,"Max":127.0}}},{"uuid":"82427d27-084a-4ab6-9c4e-db83929a1200","ObjectName":"Inlet","id":20,"Hidden":true,"Custom":"Velocity amount","Exposed":"velocity amount","Description":"How much note velocity scales the envelope peak","Value":{"Float":1.0},"Init":{"Float":1.0},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"82427d27-084a-4ab6-9c4e-db83929a1200","ObjectName":"Inlet","id":21,"Hidden":true,"Custom":"Key tracking","Exposed":"key tracking","Description":"Positive: higher notes give shorter envelopes, one octave per halving","Value":{"Float":0.0},"Init":{"Float":0.0},"Domain":{"Float":{"Min":-1.0,"Max":1.0}}},{"uuid":"73ae3e85-0c91-497e-b612-b1391f87ac72","ObjectName":"Inlet","id":22,"Hidden":true,"Custom":"Output range","Exposed":"output range","Description":"The envelope is mapped from 0-1 into this range","Value":{"Vec2f":[0.0,1.0]},"Init":{"Vec2f":[0.0,1.0]},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"b631d9b7-cbe3-4d9c-b470-f139e348aecb","ObjectName":"Inlet","id":23,"Hidden":true,"Custom":"Smooth","Exposed":"smooth","Description":"Slew applied to the output","Value":{"Float":0.0},"Init":{"Vec2f":[0.0,1.0]},"Domain":{"Vec2f":{"Min":[0.0,0.0],"Max":[1.0,1.0],"Values":[[],[]]}}},{"uuid":"b631d9b7-cbe3-4d9c-b470-f139e348aecb","ObjectName":"Inlet","id":24,"Hidden":true,"Custom":"Resolution","Exposed":"resolution","Description":"Interval between values emitted inside a processing block","Value":{"Float":0.0020000000949949026},"Init":{"Vec2f":[0.0020000000949949026,1.0]},"Domain":{"Vec2f":{"Min":[0.0005000000237487257,0.0],"Max":[0.10000000149011612,1.0],"Values":[[],[]]}}}],"Outlets":[{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"Out","Exposed":"out"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":1,"Hidden":false,"Custom":"Gate","Exposed":"gate"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":2,"Hidden":false,"Custom":"Pitch","Exposed":"pitch"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":3,"Hidden":false,"Custom":"Velocity","Exposed":"velocity"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":4,"Hidden":false,"Custom":"Active","Exposed":"active"},{"uuid":"cff96158-cc72-46d7-99dc-b6038171375b","ObjectName":"Outlet","id":5,"Hidden":false,"Custom":"Voices","Exposed":"voices"},{"uuid":"d8a3ed3d-b9c2-46f2-bdb3-d282a48481c6","ObjectName":"Outlet","id":6,"Hidden":false,"Custom":"MIDI out","Exposed":"midi out"}]},{"uuid":"06b33b83-bb67-4f7a-9980-f5d66e4266c5","ObjectName":"MidiScale","id":21,"Metadata":{"ScriptingName":"Midi scale","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[2085.8331447846913,-143.96462576060335],"Size":[228.0,198.0],"Loops":false,"FoldMode":0,"Inlets":[{"uuid":"c18adc77-e0e0-4ddf-a46c-43cb0719a890","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"in","Exposed":"in"},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Scale","Exposed":"scale","Value":{"String":"lydian"},"Init":{"String":"all"},"Domain":{"String":{"Values":["all","ionian","dorian","phyrgian","lydian","mixolydian","aeolian","locrian","I","II","III","IV","V","VI","VII","custom"]}},"Values":["all","ionian","dorian","phyrgian","lydian","mixolydian","aeolian","locrian","I","II","III","IV","V","VI","VII","custom"],"Pixmaps":[]},{"uuid":"348b80a4-45dc-4f70-8f5f-6546c85089a2","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Base","Exposed":"base","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Min":0,"Max":12}}},{"uuid":"348b80a4-45dc-4f70-8f5f-6546c85089a2","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"Transpose","Exposed":"transpose","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Min":-48,"Max":48}}}],"Outlets":[{"uuid":"d8a3ed3d-b9c2-46f2-bdb3-d282a48481c6","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"out","Exposed":"out"}]},{"uuid":"2c6493c3-5449-4e52-ae04-9aee3be5fb6a","ObjectName":"VelToNote","id":19,"Metadata":{"ScriptingName":"Pulse to Midi","Comment":"","Color":"Transparent1","Label":"","Touched":true},"Duration":10584000000,"Height":300.0,"StartOffset":0,"LoopDuration":10584000000,"Pos":[1682.271090387027,-128.2857925470519],"Size":[409.0,174.5],"Loops":false,"FoldMode":2,"Inlets":[{"uuid":"769dd38a-bfb3-4dc6-b52a-b6abb7afe2a3","ObjectName":"Inlet","id":0,"Hidden":false,"Custom":"in","Exposed":"in","Address":"zones:/enter"},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":1,"Hidden":true,"Custom":"Start quant.","Exposed":"start quant.","Value":{"Float":0.0},"Init":{"Float":0.25},"Domain":{"Float":{"Values":[0.0,1.0,0.5,0.25,0.125,0.0625,0.03125,0.015625,0.75,0.375,0.1875,0.09375,0.046875]}},"Values":[["None",{"Float":0.0}],["Whole",{"Float":1.0}],["Half",{"Float":0.5}],["4th",{"Float":0.25}],["8th",{"Float":0.125}],["16th",{"Float":0.0625}],["32th",{"Float":0.03125}],["64th",{"Float":0.015625}],["Dotted Half",{"Float":0.75}],["Dotted 4th",{"Float":0.375}],["Dotted 8th",{"Float":0.1875}],["Dotted 16th",{"Float":0.09375}],["Dotted 32th",{"Float":0.046875}]],"FolderPort":"","FileExtensions":""},{"uuid":"af2b4fc3-aecb-4c15-a5aa-1c573a239925","ObjectName":"Inlet","id":2,"Hidden":true,"Custom":"Tightness","Exposed":"tightness","Value":{"Float":1.0},"Init":{"Float":0.800000011920929},"Domain":{"Float":{"Min":0.0,"Max":1.0}}},{"uuid":"485680cc-b8b9-4a01-acc7-3e8334bdc016","ObjectName":"Inlet","id":3,"Hidden":true,"Custom":"End quant.","Exposed":"end quant.","Value":{"Float":1.0},"Init":{"Float":0.25},"Domain":{"Float":{"Values":[0.0,1.0,0.5,0.25,0.125,0.0625,0.03125,0.015625,0.75,0.375,0.1875,0.09375,0.046875]}},"Values":[["None",{"Float":0.0}],["Whole",{"Float":1.0}],["Half",{"Float":0.5}],["4th",{"Float":0.25}],["8th",{"Float":0.125}],["16th",{"Float":0.0625}],["32th",{"Float":0.03125}],["64th",{"Float":0.015625}],["Dotted Half",{"Float":0.75}],["Dotted 4th",{"Float":0.375}],["Dotted 8th",{"Float":0.1875}],["Dotted 16th",{"Float":0.09375}],["Dotted 32th",{"Float":0.046875}]],"FolderPort":"","FileExtensions":""},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":4,"Hidden":true,"Custom":"Default pitch","Exposed":"default pitch","Value":{"Int":53},"Init":{"Int":64},"Domain":{"Int":{"Min":0,"Max":127}}},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":5,"Hidden":true,"Custom":"Default vel.","Exposed":"default vel.","Value":{"Int":64},"Init":{"Int":64},"Domain":{"Int":{"Min":0,"Max":127}}},{"uuid":"348b80a4-45dc-4f70-8f5f-6546c85089a2","ObjectName":"Inlet","id":6,"Hidden":true,"Custom":"Pitch shift","Exposed":"pitch shift","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Min":-60,"Max":60}}},{"uuid":"348b80a4-45dc-4f70-8f5f-6546c85089a2","ObjectName":"Inlet","id":7,"Hidden":true,"Custom":"Pitch random","Exposed":"pitch random","Value":{"Int":24},"Init":{"Int":0},"Domain":{"Int":{"Min":0,"Max":24}}},{"uuid":"348b80a4-45dc-4f70-8f5f-6546c85089a2","ObjectName":"Inlet","id":8,"Hidden":true,"Custom":"Vel. random","Exposed":"vel. random","Value":{"Int":0},"Init":{"Int":0},"Domain":{"Int":{"Min":0,"Max":24}}},{"uuid":"238399a0-7e81-47e3-896f-08e8856e2973","ObjectName":"Inlet","id":9,"Hidden":true,"Custom":"Channel","Exposed":"channel","Value":{"Int":1},"Init":{"Int":1},"Domain":{"Int":{"Min":1,"Max":16}}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":10,"Hidden":true,"Custom":"Fixed duration","Exposed":"fixed duration","Value":{"Bool":false},"Init":{"Bool":false},"Domain":{"Bool":null}},{"uuid":"b631d9b7-cbe3-4d9c-b470-f139e348aecb","ObjectName":"Inlet","id":11,"Hidden":true,"Custom":"Duration","Exposed":"duration","Value":{"Vec2f":[4.172589302062988,0.0]},"Init":{"Vec2f":[0.0,0.0]},"Domain":{"Vec2f":{"Min":[0.0,0.0],"Max":[10.0,1.0],"Values":[[],[]]}}},{"uuid":"8b1d76c4-3838-4ac0-9b9c-c12bc5db8e8a","ObjectName":"Inlet","id":12,"Hidden":true,"Custom":"Pitch direction","Exposed":"pitch direction","Value":{"String":"Both"},"Init":{"String":"Both"},"Domain":{"String":{"Values":["Both","Higher","Lower"]}},"Values":["Both","Higher","Lower"],"Pixmaps":[]},{"uuid":"b631d9b7-cbe3-4d9c-b470-f139e348aecb","ObjectName":"Inlet","id":13,"Hidden":true,"Custom":"Min duration","Exposed":"min duration","Value":{"Vec2f":[0.8112348318099976,0.0]},"Init":{"Vec2f":[0.0,0.0]},"Domain":{"Vec2f":{"Min":[0.0,0.0],"Max":[10.0,1.0],"Values":[[],[]]}}},{"uuid":"b631d9b7-cbe3-4d9c-b470-f139e348aecb","ObjectName":"Inlet","id":14,"Hidden":true,"Custom":"Max duration","Exposed":"max duration","Value":{"Vec2f":[4.566903114318848,0.0]},"Init":{"Vec2f":[1.0,0.0]},"Domain":{"Vec2f":{"Min":[0.0,0.0],"Max":[10.0,1.0],"Values":[[],[]]}}},{"uuid":"fb27e4cb-ea7f-41e2-ad92-2354498c1b6b","ObjectName":"Inlet","id":15,"Hidden":true,"Custom":"Limit duration","Exposed":"limit duration","Value":{"Bool":true},"Init":{"Bool":true},"Domain":{"Bool":null}}],"Outlets":[{"uuid":"d8a3ed3d-b9c2-46f2-bdb3-d282a48481c6","ObjectName":"Outlet","id":0,"Hidden":false,"Custom":"out","Exposed":"out"}]}],"SmallViewRack":[{"Processes":[2,3,4,5,6,7,8,9,11,12,13,16,18,19,20,21,29,30,32,34,35],"Process":null,"Height":200.0,"Nodal":true},{"Processes":[31],"Process":31,"Height":200.0,"Nodal":false}],"FullViewRack":[{"Process":0,"Nodal":true},{"Process":31,"Nodal":false}],"DefaultDuration":10584000000,"MinDuration":10584000000,"MaxDuration":11113200000,"GuiDuration":11642400000,"Speed":1.0,"Rigidity":false,"MinNull":false,"MaxInf":true,"Signatures":[[0,[4,4]]],"StartState":0,"EndState":1,"StartDate":0,"HeightPercentage":0.0,"NodalSlotHeight":100.0,"QuantizationRate":-1.0,"Zoom":933632.7185244587,"Center":581653183,"NodalCenter":[1783.5985858027457,-229.9028203349131],"NodalScale":1.1156006217298278,"ViewMode":1,"SmallViewShown":true,"HasSignature":true},"StartTimeNode":{"ObjectName":"Scenario::TimeSyncModel","id":0,"Metadata":{"ScriptingName":"Sync.start","Comment":"","Color":"Gray","Label":"","Touched":true},"Date":0,"Events":[0],"MusicalSync":-1.0,"AutoTrigger":false,"Start":true,"Active":false,"Expression":" { true == false } "},"EndTimeNode":{"ObjectName":"Scenario::TimeSyncModel","id":1,"Metadata":{"ScriptingName":"Sync.end","Comment":"","Color":"Gray","Label":"","Touched":true},"Date":10584000000,"Events":[1],"MusicalSync":-1.0,"AutoTrigger":false,"Start":false,"Active":true,"Expression":" { true == false } "},"StartEvent":{"ObjectName":"Scenario::EventModel","id":0,"Metadata":{"ScriptingName":"Event.start","Comment":"","Color":"Emphasis4","Label":"","Touched":true},"TimeNode":0,"States":[0],"Condition":"","Date":0,"Offset":0},"EndEvent":{"ObjectName":"Scenario::EventModel","id":1,"Metadata":{"ScriptingName":"Event.end","Comment":"","Color":"Emphasis4","Label":"","Touched":true},"TimeNode":1,"States":[1],"Condition":"","Date":10584000000,"Offset":0},"StartState":{"ObjectName":"Scenario::StateModel","id":0,"Metadata":{"ScriptingName":"State.start","Comment":"","Color":"Base1","Label":"","Touched":true},"Event":0,"PreviousConstraint":null,"NextConstraint":0,"HeightPercentage":0.0,"Messages":{"Name":"","Accessors":[],"Unit":"none","Previous":[],"Following":[],"User":null,"Priorities":[1,2,0]},"Controls":[],"StateProcesses":[]},"EndState":{"ObjectName":"Scenario::StateModel","id":1,"Metadata":{"ScriptingName":"State.end","Comment":"","Color":"Base1","Label":"","Touched":true},"Event":1,"PreviousConstraint":0,"NextConstraint":null,"HeightPercentage":0.0,"Messages":{"Name":"","Accessors":[],"Unit":"none","Previous":[],"Following":[],"User":null,"Priorities":[1,2,0]},"Controls":[],"StateProcesses":[]}},"Speed":1.0,"Cables":[{"ObjectName":"Process::Cable","id":2,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"pose_detector","ObjectId":2},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"lightness_sample","ObjectId":4},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":3,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"pose_detector","ObjectId":2},{"ObjectName":"Outlet","ObjectId":1}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Javascript","ObjectId":3},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":4,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Javascript","ObjectId":3},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Display","ObjectId":6},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":5,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Javascript","ObjectId":3},{"ObjectName":"Outlet","ObjectId":1}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Display","ObjectId":7},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":6,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Javascript","ObjectId":3},{"ObjectName":"Outlet","ObjectId":2}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Display","ObjectId":8},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":7,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Javascript","ObjectId":3},{"ObjectName":"Outlet","ObjectId":1}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"object_filter","ObjectId":9},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":8,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Javascript","ObjectId":3},{"ObjectName":"Outlet","ObjectId":1}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"object_filter","ObjectId":11},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":9,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Javascript","ObjectId":3},{"ObjectName":"Outlet","ObjectId":10}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Display","ObjectId":12},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":16,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"VelToNote","ObjectId":19},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"MidiScale","ObjectId":21},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":40,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"MicroMapping","ObjectId":29},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Faust","ObjectId":30},{"ObjectName":"Inlet","ObjectId":2}]},{"ObjectName":"Process::Cable","id":15,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"VelToNote","ObjectId":19},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"MidiDisplay","ObjectId":16},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":42,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Faust","ObjectId":30},{"ObjectName":"Outlet","ObjectId":1}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Airwindows","ObjectId":32},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":38,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"fomo","ObjectId":20},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Faust","ObjectId":30},{"ObjectName":"Inlet","ObjectId":1}]},{"ObjectName":"Process::Cable","id":45,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Airwindows","ObjectId":32},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Airwindows","ObjectId":34},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":17,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"MidiScale","ObjectId":21},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"fomo","ObjectId":20},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":46,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"midi_envelope","ObjectId":18},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"SignalDisplay","ObjectId":31},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":18,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"VelToNote","ObjectId":19},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"midi_envelope","ObjectId":18},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":36,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"midi_envelope","ObjectId":18},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"MicroMapping","ObjectId":29},{"ObjectName":"Inlet","ObjectId":0}]},{"ObjectName":"Process::Cable","id":43,"Type":0,"Source":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"midi_envelope","ObjectId":18},{"ObjectName":"Outlet","ObjectId":0}],"Sink":[{"ObjectName":"Scenario::ScenarioDocumentModel","ObjectId":1},{"ObjectName":"Scenario::BaseScenario","ObjectId":0},{"ObjectName":"Scenario::IntervalModel","ObjectId":0},{"ObjectName":"Airwindows","ObjectId":32},{"ObjectName":"Inlet","ObjectId":2}]}],"BusIntervals":[]},"Plugins":[{"uuid":"aac1402f-6851-4a1a-ab50-5f213acd1262","Name":"tracking to midi","Author":"","Description":"Turns tracked positions into MIDI: zones defined in 2D or 3D trigger notes as they are entered and left. Requires the pose-detector model package and tracking-zones JavaScript preset.","Url":"","Platforms":"","Created":"2026-09-08T19:40:05.648Z","LastSaved":"2026-09-22T04:46:25.664Z","Thumbnail":"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","AutomaticThumbnail":true},{"uuid":"1f923578-08c3-49be-9ba9-69c144ee2e32","Refresh":false,"Reconnect":false,"MidiRatio":1.0},{"uuid":"6e610e1f-9de2-4c36-90dd-0ef570002a21","RootNode":{},"Children":[{"Device":{"Name":"Camera","Protocol":"d615690b-f2e2-447b-b70e-a800552db69c","Input":"default","Device":"default","Size":[-1,-1],"FPS":0.0,"Codec":0,"PixelFormat":-1,"ColorRange":0,"Custom":false}},{"Device":{"Name":"zones","Protocol":"9a42de4b-f6eb-4bca-9564-01b975f601b9","Config":{"Mode":1,"Version":0,"Framing":1,"Bundle":0,"Transport":{"UDP":{"Local":{"Bind":"0.0.0.0","Port":9997},"Remote":{"Host":"127.0.0.1","Port":9996,"Broadcast":false}}}}},"Children":[{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"String":"Cell 2x3"},"Domain":{"String":{}},"Name":"exit"}},{"Address":{"ioType":"<->","ClipMode":"Free","RepetitionFilter":false,"Value":{"String":"Cell 2x2"},"Domain":{"String":{}},"Name":"enter"}}]}]},{"uuid":"05e72689-e02c-4c9d-a0bf-fe84c32d3d96","Data":""}],"Version":4,"Commit":"68b9189fdec32fcb9303cdb47e1c0d7d15adc14f","Tag":"3.8.2"}