diff --git a/CLAUDE.md b/CLAUDE.md index 09c9dfc..767dd20 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -72,7 +72,9 @@ in the same binary by 9.3; its documentation (9.4) and runtime tests (9.5) are s - **`runtime-tests/`** — tests that run inside a real Max (plan 6.1): Cycling '74's max-test harness (submodule), patchers generated by `make_patchers.py` (edit the generator, never the patchers), fixtures (`python/maxtest_*.py`, copied into `python/` for a run) and `run.py`, which installs the - harness into Max's Packages, launches Max, drives it over OSC and reports. macOS, local only — + harness into Max's Packages, launches Max, drives it over OSC and reports — `tap.python~`'s tests + and `tap.python`'s (`tap.python.*`, plan 9.5; `tap.python.load` opens first, in a Max with Restore + Windows on Launch turned off for the run, so that `init/` must find the object). macOS, local only — `runtime-tests/README.md` has what the first runs taught about writing one. Two sessions run only when asked for: `soak` (plan 6.2, an hour) and `perf` (plan 6.3). `runtime-tests/spike/` is the record of the 9.0 spike for `tap.python` — its patchers, runners and Max's logs; the spike's class diff --git a/docs/PRODUCTION-PLAN.md b/docs/PRODUCTION-PLAN.md index 4224c8a..4c1f55c 100644 --- a/docs/PRODUCTION-PLAN.md +++ b/docs/PRODUCTION-PLAN.md @@ -828,7 +828,7 @@ row shipped what only a host platform could show. generator); a vignette and three tutorials with patchers for the Documentation window; an Extras overview named as the landing patcher; help patchers with tabs for both objects; CI checks for the hand-made XML and JSON. -- [ ] **9.5 Runtime tests:** the `tap.python.*` patchers in `make_patchers.py`; `run.py` aware of +- [x] **9.5 Runtime tests** (#50)**:** the `tap.python.*` patchers in `make_patchers.py`; `run.py` aware of the second object; the soak session gains a `metro`-driven `tap.python` under saves. - [ ] **9.6 The release session, Mac and Windows:** the whole suite on the Mac, the help patcher checked and re-saved, Max's page for `tap.python~` committed, the hand checks; the package by diff --git a/docs/TAP-PYTHON-PLAN.md b/docs/TAP-PYTHON-PLAN.md index df9c32b..529f523 100644 --- a/docs/TAP-PYTHON-PLAN.md +++ b/docs/TAP-PYTHON-PLAN.md @@ -8,7 +8,7 @@ change — and the plan to build it (Phase 9 of the production plan, which point Drafted 2026-10-02 against 1.0.0 and audited the same day (`AUDIT-TAP-PYTHON-PLAN.md`: two blockers, six major findings, nine minor; its addendum of 2026-10-09 records what 1.0.1 and 1.0.2 changed). **Revised 2026-10-09 against 1.0.2** for every finding; the [revision record](#revision-record) -at the end says what each changed. 9.0 to 9.4 are built — the spike ran in Max on a Mac +at the end says what each changed. 9.0 to 9.5 are built — the spike ran in Max on a Mac and on Windows: its answers are under [9.0](#what-90-found), and the design below follows them. Tick the items below (with the PR) as they land, and keep the design current where a PR decides differently. @@ -450,7 +450,7 @@ third was Windows-only. 9.5's), which also shows that the wrapper passes a class's attributes and messages on only through `setvalue` and `applyvalues`. The ReadMe's message sentence is the perf script's, written when the tables are next measured (9.6). Checked in Max 9.1.5 on the Mac; Windows in 9.6.)* -- [ ] **9.5 Runtime tests.** The patchers above in `make_patchers.py` (9.4 added `tap.python~.mc`, +- [x] **9.5 Runtime tests** (#50). The patchers above in `make_patchers.py` (9.4 added `tap.python~.mc`, for the `init/` mapping of `mc.tap.python~`); `run.py` aware of the second object (the `init/` mapping in the installed package, the `--package` mode, the reference-page rule for `tap.python~`'s page only). What 9.0's runner learned: a fresh Max @@ -458,7 +458,22 @@ third was Windows-only. opened with an "open document" event, never `max openfile` through the harness's OSC (it crashes Max); and Max's log drops a `[print]`'s name. The soak session (6.2) gains a `tap.python` driven by a `metro` while its file is saved every second: every output checked, - memory flat, the console counts exact. + memory flat, the console counts exact. *(As built: seven `tap.python.*` patchers — load (opened + first, in a Max with Restore Windows on Launch off for the run, so `init/` must find the object), + outputs (every row of the table), messages (attributes, `get` from the dumpout, the + forwarder), reload (an outlet added before the dumpout takes a scripted cord and carries; one + removed takes its cord; a broken save reported once), shared (one file for both kinds: both follow + a save, each kind's reserved name said once — `mode` by `tap.python~`, `dumpout` by `tap.python`, + as Max answers `dumpout` on neither but the class that registers it), threads (a `metro` every 5 + ms, every output against its input, on the main, scheduler and audio threads) and faults. Outputs + are checked as `[tosymbol]` writes them — floats with four decimals, `symbol` kept before a + string — which a probe in Max found; the README records it. The `[print]`-free checks needed no + `max openfile`: run.py opens patchers through the harness's `test.master run`, which 6.1 already + used. `run.py` requires the package's `init/` lines, warns if the hand-written page changes, and + puts Max's preferences back. All 21 runtime tests pass in Max 9.1.5 on macOS; the hour-long soak + passed all 18 of its checks, the `tap.python` answering every message of a 10 ms metro correctly + for 60 minutes of saves: Max's memory 658 MB a minute in, 663 MB at the end (peak 675), 3601 + executions of the file, Python's object count between 18,700 and 22,000 throughout.)* - [ ] **9.6 The release session, Mac and Windows.** Build, run the whole runtime suite on the Mac, check the help patcher and re-save it, commit the page Max writes for `tap.python~`, the hand checks the tests cannot make (`get` through the dumpout in a patcher, attrui on a diff --git a/runtime-tests/README.md b/runtime-tests/README.md index 25a16dc..f26c397 100644 --- a/runtime-tests/README.md +++ b/runtime-tests/README.md @@ -1,7 +1,8 @@ # Runtime tests in Max The unit tests (`core/tests/`, and the external's `_test.cpp` against min's mock kernel) never load -the object into Max. These do: each is a patcher that Max runs, driven by Cycling '74's +the objects into Max. These do — `tap.python~` and, since plan 9.5, `tap.python` (the +`tap.python.*` patchers): each is a patcher that Max runs, driven by Cycling '74's [max-test](https://github.com/Cycling74/max-test) harness (MIT, the `max-test` submodule), checking what only a real Max shows — the file watcher, `getattr` on the Python-defined attributes, audio through the real signal chain, `poly~`, the console, and loading without a runtime. (Plan 6.1 and @@ -41,26 +42,32 @@ runtime-tests/ ## What the runner does -1. Builds the harness's `oscar` extension if needed, and installs the harness into `Packages` as +1. Checks the package: the external built from the current sources, a runtime, and the lines of + `init/tap.python.txt` without which Max finds neither `tap.python` nor `mc.tap.python~`. Then + backs up Max's preference files, turns off **Restore Windows on Launch** and moves aside the + workspaces Max would reopen (into `logs/`) — a window reopened at launch would load the binary + before the first test — and puts the preferences back when the run ends. +2. Builds the harness's `oscar` extension if needed, and installs the harness into `Packages` as `max-test` — a **copy**, not a link, because Max loads a package's extensions only from a real folder. The copy is marked `INSTALLED-BY-PYTHONTAP.txt`, replaced on every run, and left installed afterwards (Max then loads `oscar` at every launch; delete the folder to uninstall). Another `max-test` already in `Packages` is refused, not replaced. -2. Links `runtime-tests/` into `Packages` as `PythonTap-runtime-tests` (so Max finds the patchers +3. Links `runtime-tests/` into `Packages` as `PythonTap-runtime-tests` (so Max finds the patchers by name), and copies `python/maxtest_*.py` into the package's `python/` folder (the object loads classes from there only). Both are removed afterwards. -3. **Session `without-runtime`**: moves `support/` aside and starts Max. The object must load and +4. **Session `without-runtime`**: moves `support/` aside and starts Max. The object must load and say the runtime is missing; then, with `support/` put back while Max runs, a new object must say to restart Max (on macOS the weak binding to libpython is fixed when the external loads). `support/` is always put back — and a run killed midway leaves it as `support.maxtest-aside/`, which the next run restores. -4. **Session `main`**: starts Max again and runs every `*.maxtest.maxpat`. -5. Only when asked for: **session `soak`** (plan 6.2) runs `soak/tap.python~.soak.maxpat` for an +5. **Session `main`**: starts Max again and runs every `*.maxtest.maxpat` — `tap.python.load` first, + so that the fresh Max must find `tap.python` through the package's `init/` mapping (plan 9.0). +6. Only when asked for: **session `soak`** (plan 6.2) runs `soak/tap.python~.soak.maxpat` for an hour, sampling Max's memory every minute, and writes a summary — memory, reloads, and what the patcher logged each minute — to `logs/soak.summary`; **session `perf`** (plan 6.3) runs `perf/tap.python~.perf.maxpat` and averages Max's CPU-meter readings into `logs/perf.json`, which `scripts/update-perf-docs.py --max` turns into the ReadMe's table. -6. Reads the results from the harness's SQLite database (in the installed `max-test`) and prints +7. Reads the results from the harness's SQLite database (in the installed `max-test`) and prints them. Max's standard output goes to `runtime-tests/logs/` — only min's own lines appear there; the console errors seen during a failing test are printed from its log instead. @@ -97,13 +104,27 @@ first runs taught, built into the helpers: rate is not like for like, so the perf patcher measures at the device's own rate. - **A check that audio did not change passes vacuously if no audio ran**: pair each with a sample check (the soak's `phase-N-…-output`). +- **`tap.python`'s output is checked as `[tosymbol]` writes it** (`Test.output_is()`): one symbol for + the whole message — `symbol C` (the word `symbol` kept), `1 0 1`, `note 60 100`, and floats with + four decimals, `0.5000` — held in a `[zl.reg]` until the check compares it with a quoted + `[sel "…"]`. A `bang` makes `[tosymbol]` repeat its last symbol, so a bang output is not checked + this way. An output that never came fails the check: the harness records an assertion that never + answers as a failure ("never returned results"). `Test.output_count()` and `Test.count_is()` check + how many messages an outlet sent — nothing, for `None`. +- **Text logged with spaces breaks the harness's SQL** (its log line goes between double quotes, and + Max quotes a symbol with a space): log codes, not text — `[atoi]`, as the probe that found the + formats above did. +- **Overdrive is `; max preempt 1`, Scheduler in Audio Interrupt `; dsp takeover 1`**; the threads + test reads both through `[adstatus]` first and puts them back at the end. The fixtures' docstrings say what each is for. Open a patcher in Max to watch a test run; its `test.*` objects only record anything when the harness opened it. ## Not covered here -Some of the runbook's checks still need a person: that a `bool` attribute shows as a toggle in the +`tap.python`'s once-per-session notice that Scheduler in Audio Interrupt runs Python on the audio +thread is a warning, which `[error]` does not see: the glue test checks it, and the threads test only +that the messages run there correctly. Some of the runbook's checks still need a person: that a `bool` attribute shows as a toggle in the inspector, that an `attrui` displaying a removed attribute looks right (the tests check only that nothing breaks), and whether the audio *device* drops out while a reload holds the GIL (the tests check every sample the object outputs, not the driver). Changing the sample rate in Audio Status is diff --git a/runtime-tests/make_patchers.py b/runtime-tests/make_patchers.py index 1b6874b..eb2ef44 100644 --- a/runtime-tests/make_patchers.py +++ b/runtime-tests/make_patchers.py @@ -154,6 +154,11 @@ def load(self, host: str, python_class: str, voices: int = 1) -> list[str]: self.send(f"voices {voices}", host), self.send(f"patchername {HOST}", host)] + def control(self, arguments: str, value_outlets: int = 1, column: int = 2, varname: str = "") -> str: + """A [tap.python …] box: its value outlets, and the dumpout at the right.""" + extra = {"varname": varname} if varname else {} + return self.patcher.box(f"tap.python {arguments}".strip(), 1, value_outlets + 1, column=column, **extra) + # -- actions ----------------------------------------------------------------------------- def send(self, text: str, destination: str, inlet: int = 0) -> str: @@ -252,6 +257,40 @@ def no_change(self, name: str, source, value: float) -> tuple[str, str]: self._assert(name, zero) return start, check + def output_is(self, name: str, source: str, outlet: int, expected: str) -> str: + """Check what `source`'s `outlet` output last, as [tosymbol] writes it ("symbol C", "1 0 1", + "0.5000", "note 60 100"): bang the returned box to check. Nothing output fails the check (the + harness records an assertion that never answers).""" + text = self.patcher.box("tosymbol", column=3) + held = self.patcher.box("zl.reg", inlets=2, outlets=2, column=3) + select = self.patcher.box(f'sel "{expected}"', inlets=2, outlets=2, column=3) + yes = self.patcher.message("1", column=3) + no = self.patcher.message("0", column=3) + self.patcher.connect(source, outlet, text) + self.patcher.connect(text, 0, held, 1) # kept, not output, until the check + self.patcher.connect(held, 0, select) + self.patcher.connect(select, 0, yes) + self.patcher.connect(select, 1, no) + self.patcher.connect(no, 0, self._assert(name, yes)) + return held + + def output_count(self, source: str, outlet: int) -> str: + """A [counter] of the messages `source`'s `outlet` outputs, from when the patcher opened.""" + trigger = self.patcher.box("t b", column=3) + counter = self.patcher.box("counter 1 1000000", inlets=3, outlets=4, column=3) + self.patcher.connect(source, outlet, trigger) + self.patcher.connect(trigger, 0, counter) + return counter + + def count_is(self, name: str, counter: str, compare: str) -> str: + """Check a counter (output_count()) so far: `compare` is a Max comparison, e.g. "== 3".""" + count = self.patcher.box("i", inlets=2, column=3) + test = self.patcher.box(compare, inlets=2, column=3) + self.patcher.connect(counter, 0, count, 1) + self.patcher.connect(count, 0, test) + self._assert(name, test) + return count + def metro(self, interval_ms: int, *targets: str) -> tuple[str, str]: """A [metro] banging `targets` (in order): returns (start, stop) actions.""" metro = self.patcher.box(f"metro {interval_ms}", inlets=2, column=1) @@ -795,6 +834,253 @@ def multichannel() -> Test: return t +def control_load() -> Test: + t = Test("tap.python.load.maxtest.maxpat", + "tap.python (plan 9.5), the first patcher a fresh Max opens (run.py sees to it): Max finds the " + "object through the package's init/ mapping to tap.python~'s binary. With no argument it " + "loads python/default.py; each example outputs what its method returns — euclid's list from a " + "bang (its steps set by an @attribute argument), scale's array as a list, note_name's two values " + "right to left, the name as a symbol.", audio=False) + default = t.control("") + euclid = t.control("euclid") + shorter = t.control("euclid @steps 5") + scale = t.control("scale @factor 2") + note = t.control("note_name", value_outlets=2) + gain = t.output_is("default-bang-outputs-the-gain", default, 0, "1.0000") + rhythm = t.output_is("euclid-bang-outputs-a-list", euclid, 0, "1 0 0 1 0 0 1 0") + short = t.output_is("attribute-argument-applies", shorter, 0, "1 0 1 0 1") + scaled = t.output_is("scale-list-through-numpy", scale, 0, "2.0000 4.0000 6.0000") + name = t.output_is("note-name-is-a-symbol", note, 0, "symbol C") + octave = t.output_is("octave-from-the-second-outlet", note, 1, "4") + # right to left, as Max objects do: the octave is already out when the name comes + octave_held = t.patcher.box("tosymbol", column=3) + held = t.patcher.box("zl.reg", inlets=2, outlets=2, column=3) + on_name = t.patcher.box("t b", column=3) + t.patcher.connect(note, 1, octave_held) + t.patcher.connect(octave_held, 0, held, 1) + t.patcher.connect(note, 0, on_name) + t.patcher.connect(on_name, 0, held) + select = t.patcher.box('sel "4"', inlets=2, outlets=2, column=3) + yes, no = t.patcher.message("1", column=3), t.patcher.message("0", column=3) + t.patcher.connect(held, 0, select) + t.patcher.connect(select, 0, yes) + t.patcher.connect(select, 1, no) + t.patcher.connect(no, 0, t._assert("outlets-right-to-left", yes)) + t.step(t.send("bang", default), t.send("bang", euclid), t.send("bang", shorter), t.send("1 2 3", scale), + t.send("60", note)) + t.step(gain, rhythm, short, scaled, name, octave, + t.attribute_equals("attribute-reads-back", shorter, "steps", 5), t.errors_are("console-clean", "== 0")) + return t + + +def control_outputs() -> Test: + t = Test("tap.python.outputs.maxtest.maxpat", + "Every row of tap.python's output table (plan 9.5), one method of maxtest_outputs each: None " + "nothing; a bool (numpy's too) 0 or 1; an int, a float; a str as symbol , whatever it says; " + "a list, an unhinted tuple, an array as a list; a list whose first element is a str the message " + "it names; an empty list nothing; a value past 64 bits, a dict or a nested list nothing, " + "reported; a tuple[str, int] one value per outlet, None in a slot nothing from it.", audio=False) + outputs = t.control("maxtest_outputs", value_outlets=2) + first, second = t.output_count(outputs, 0), t.output_count(outputs, 1) + pattern = "nothing.output" + t.count_errors(pattern) + + def row(method: str, expected: str, outlet: int = 0) -> list[str]: + return [t.send(method, outputs), t.output_is(f"{method}-outputs-{expected.replace(' ', '-')}", outputs, + outlet, expected)] + + def nothing(method: str, firsts: int, errors: int) -> list[str]: + return [t.send(method, outputs), t.count_is(f"{method}-outputs-nothing", first, f"== {firsts}"), + t.errors_are(f"{method}-reported-or-not", f"== {errors}", pattern)] + + t.step(nothing("nothing", 0, 0)) + t.step(row("yes", "1")) + t.step(row("numpy_no", "0")) + t.step(row("integer", "42")) + t.step(row("real", "0.5000")) + t.step(row("text", "symbol hello world")) + t.step(row("word", "symbol bang")) + t.step(row("numbers", "1 2.5000 3")) + t.step(row("message", "note 60 100")) + t.step(row("pair", "7 8")) + t.step(row("array", "1.0000 2.0000")) + t.step(row("scalar", "0.2500")) + t.step(nothing("empty", 11, 0)) + t.step(nothing("big", 11, 1)) + t.step(nothing("mapping", 11, 2)) + t.step(nothing("nested", 11, 3)) + t.step(row("spread", "symbol left"), t.output_is("spread-second-outlet", outputs, 1, "9")) + t.step(t.send("partial", outputs), t.output_is("partial-second-outlet", outputs, 1, "5"), + t.count_is("partial-outputs-nothing-from-the-first", first, "== 12"), + t.count_is("second-outlet-twice", second, "== 2"), + t.errors_are("only-what-cannot-be-output-reported", "== 3")) + return t + + +def control_messages() -> Test: + t = Test("tap.python.messages.maxtest.maxpat", + "tap.python's messages (plan 9.5): an attribute set by its name and read back by getattr, and " + "by get from the dumpout; a method called by its message; a message the class has no " + "method for passed to its anything, with the selector first (int and symbol too, which never " + "reach a class's anything in Max); and a class without anything not understanding one.", + audio=False) + forward = t.control("maxtest_forward") + plain = t.control("maxtest_echo") + pattern = "doesn.t.understand" + t.count_errors(pattern) + t.step(t.send("getsteps", forward)) + t.step(t.output_is("get-attribute-from-the-dumpout", forward, 1, "steps 8"), t.send("steps 3", forward)) + t.step(t.attribute_equals("attribute-set-by-its-name", forward, "steps", 3), t.send("getsteps", forward)) + t.step(t.output_is("get-attribute-follows-it", forward, 1, "steps 3"), t.send("hello 1", forward)) + t.step(t.output_is("method-called-by-its-message", forward, 0, "2"), t.send("foo 1 two", forward)) + t.step(t.output_is("anything-gets-the-selector-first", forward, 0, "foo 1 two"), t.send("symbol hi", forward)) + t.step(t.output_is("symbol-reaches-anything", forward, 0, "symbol hi"), t.send("int 5", forward)) + t.step(t.output_is("int-reaches-anything", forward, 0, "5"), t.send("nonesuch 1", plain)) + t.step(t.errors_are("without-anything-not-understood", "== 1", pattern), t.send("7", plain)) + t.step(t.output_is("its-int-method-still-answers", plain, 0, "7"), + t.errors_are("console-clean-but-that", "== 1")) + return t + + +def control_reload() -> Test: + t = Test("tap.python.reload.maxtest.maxpat", + "tap.python reloading (plan 9.5): a save that widens a method's tuple return hint adds an outlet " + "in place, before the dumpout, which takes a patch cord and carries its value, while the cords " + "of the outlets that stay keep theirs; narrowing removes it with its cord; a file that fails to " + "load is reported once and outputs nothing until a save fixes it.", audio=False) + widen = t.control("maxtest_widen", varname="widen") + editor = t.python("maxtest_editor", column=1) + added = t.patcher.box("t l", column=3, varname="added") + scripting = t.obj("thispatcher") + first = t.output_count(widen, 0) + dump = t.output_count(widen, 1) + from_added = t.output_count(added, 0) + t.count_errors("Failed.to.load") + t.step(t.send("bang", widen)) + t.step(t.output_is("one-value", widen, 0, "1"), t.send("returns maxtest_widen 2", editor), + t.send("filechanged", widen)) + t.step(t.send("script connect widen 1 added 0", scripting)) + t.step(t.send("bang", widen)) + t.step(t.output_is("first-outlet-keeps-its-cord", widen, 0, "1"), + t.output_is("added-outlet-carries-its-value", added, 0, "2"), + t.count_is("dumpout-cord-moved-with-the-dumpout", dump, "== 0"), + t.send("returns maxtest_widen 1", editor), t.send("filechanged", widen)) + t.step(t.send("bang", widen)) + t.step(t.count_is("first-outlet-output-three-times", first, "== 3"), + t.count_is("removed-outlet-took-its-cord", from_added, "== 1"), + t.send("corrupt maxtest_widen", editor)) + t.step(t.send("bang", widen), t.errors_are("broken-save-reported-once", "== 1", "Failed.to.load"), wait=WATCH) + t.step(t.count_is("broken-outputs-nothing", first, "== 3"), t.send("restore maxtest_widen", editor)) + t.step(t.send("bang", widen), wait=WATCH) + # the object's own errors: the broken save's report alone (its traceback is Python's) + t.step(t.count_is("fixed-outputs-again", first, "== 4"), + t.errors_are("nothing-else-reported", "== 1", "tap.python~?:")) + return t + + +def control_shared() -> Test: + t = Test("tap.python.shared.maxtest.maxpat", + "One file for a tap.python~ and a tap.python (plan 9.5): a save runs it once for both and both " + "follow; each kind says once what it owes — mode is reserved by tap.python~ only, dumpout by " + "tap.python only — on load and again after a change, whichever kind ran the file.", audio=True) + source = t.signal(1.0) + host = t.host() # loaded by a step, so that what the audio object prints is caught + t.patcher.connect(source, 0, host) + scripting = t.obj("thispatcher") + editor = t.python("maxtest_editor", column=1) + t.count_errors("mode.. is.reserved") + t.count_errors("dumpout.. is.reserved") + # the tap.python is made by scripting a step in, so that what its constructor prints is caught too + made = t.send("script newdefault control 600 400 tap.python maxtest_shared, " + "script connect asked 0 control 0, script connect control 0 answered 0", scripting) + asked = t.patcher.message("value", column=1) + t.patcher.boxes[-1]["box"]["varname"] = "asked" + answered = t.patcher.box("t l", column=3, varname="answered") + t.step(t.load(host, "maxtest_shared"), made) + t.step(asked, t.errors_are("mode-reserved-said-by-the-audio-kind-only", "== 1", "mode.. is.reserved"), + t.errors_are("dumpout-reserved-said-by-the-control-kind-only", "== 1", "dumpout.. is.reserved")) + t.step(t.output_is("control-reads-the-file", answered, 0, "1.0000"), t.send("scale maxtest_shared 2.", editor)) + t.step(t.send("filechanged", host), t.send("script send control filechanged", scripting)) + t.step(asked) + t.step(t.output_is("control-follows-the-save", answered, 0, "2.0000"), + t.errors_are("mode-said-again-once", "== 2", "mode.. is.reserved"), + t.errors_are("dumpout-said-again-once", "== 2", "dumpout.. is.reserved"), + t.errors_are("nothing-else", "== 4")) + return t + + +def control_threads() -> Test: + t = Test("tap.python.threads.maxtest.maxpat", + "tap.python's messages on the thread they come on (plan 9.5): a metro's every 5 ms, through a " + "counter, each output checked against its input — on the main thread (Overdrive off), the " + "scheduler thread (Overdrive on), and the audio thread (Scheduler in Audio Interrupt on, audio " + "running). Puts Overdrive and Audio Interrupt back as they were.", audio=True) + echo = t.control("maxtest_echo") + metro = t.patcher.box("metro 5", inlets=2, column=1) + counter = t.patcher.box("counter 0 1000000", inlets=3, outlets=4, column=1) + split = t.patcher.box("t i i", outlets=2, column=1) + expected = t.patcher.box("i", inlets=2, column=3) + t.patcher.connect(metro, 0, counter) + t.patcher.connect(counter, 0, split) + t.patcher.connect(split, 1, expected, 1) + t.patcher.connect(split, 0, echo) + differs = t.patcher.box("!=", inlets=2, column=3) + t.patcher.connect(expected, 0, differs, 1) + on_output = t.patcher.box("t i b", outlets=2, column=3) + t.patcher.connect(echo, 0, on_output) + t.patcher.connect(on_output, 1, expected) + t.patcher.connect(on_output, 0, differs) + mismatch = t.patcher.box("sel 1", inlets=2, outlets=2, column=3) + t.patcher.connect(differs, 0, mismatch) + wrong = t.output_count(mismatch, 0) + right = t.output_count(echo, 0) + # Overdrive and Audio Interrupt as they were, to put back at the end + states = [] + for setting in ("overdrive", "takeover"): + status = t.patcher.box(f"adstatus {setting}", inlets=2, outlets=2, column=4) + was = t.patcher.box("i", inlets=2, column=4) + first = t.patcher.box("gate 1 1", inlets=2, column=4) + t.patcher.connect(status, 1, first, 1) + t.patcher.connect(first, 0, was, 1) + t.patcher.connect(was, 0, status) + close = t.patcher.message("0", column=4) + t.patcher.connect(close, 0, first) + states.append((status, was, close)) + start, stop = t.send("1", metro), t.send("0", metro) + t.step([states[0][0], states[1][0]]) + t.step([states[0][2], states[1][2]], t.patcher.message("; max preempt 0; dsp takeover 0", column=1)) + t.step(start, wait=300) + t.step(stop, wait=1000) + t.step(t.count_is("main-thread-in-order", wrong, "== 0"), t.count_is("main-thread-outputs", right, ">= 50"), + t.patcher.message("; max preempt 1", column=1)) + t.step(start, wait=300) + t.step(stop, wait=1000) + t.step(t.count_is("scheduler-thread-in-order", wrong, "== 0"), t.count_is("scheduler-thread-outputs", right, ">= 100"), + t.patcher.message("; dsp takeover 1", column=1)) + t.step(start, wait=1500) + t.step(stop, wait=1000) + t.step(t.count_is("audio-thread-in-order", wrong, "== 0"), t.count_is("audio-thread-outputs", right, ">= 150"), + states[0][1], states[1][1], t.errors_are("console-clean", "== 0")) + return t + + +def control_faults() -> Test: + t = Test("tap.python.faults.maxtest.maxpat", + "What tap.python reports and survives (plan 9.5): sys.exit() in a method is reported, not obeyed; " + "an exception prints its traceback; neither outputs anything, and the object still answers.", + audio=False) + faults = t.control("maxtest_control_faults") + outputs = t.output_count(faults, 0) + t.count_errors("SystemExit") + t.count_errors("ValueError") + t.step(t.send("leave", faults)) + t.step(t.errors_are("sys-exit-reported", ">= 1", "SystemExit"), t.send("fail", faults)) + t.step(t.errors_are("exception-reported", ">= 1", "ValueError"), + t.count_is("neither-output-anything", outputs, "== 0"), t.send("ok", faults)) + t.step(t.output_is("still-answers", faults, 0, "1")) + return t + + def soak(minutes: float) -> Test: """Plan 6.2, run by `run.py --session soak`: not a .maxtest, so the quick suite skips it.""" duration = int(minutes * 60_000) @@ -806,8 +1092,11 @@ def soak(minutes: float) -> Test: "maxtest_editor saves both files with a new revision and every instance is told to reload. A " "third of the way through the poly~ changes its sample rate (up 2), and back at two thirds. " "Every output sample must stay exact in each phase, the console clean, and the saves must have run " - "the module again. Logged: Max's DSP CPU after 30 quiet seconds (no reloads, to compare with " - "core/bench) and then each minute, with the module's executions and Python's object count.", + "the module again. And a tap.python (plan 9.5), answering a metro every 10 ms with what it is " + "given while its file is saved and reloaded every second too: every output checked against its " + "input, none missing but a few. Logged: Max's DSP CPU after 30 quiet seconds (no reloads, to " + "compare with core/bench) and then each minute, with the module's executions and Python's " + "object count.", watchdog=duration + 180_000) source = t.signal(1.0) host = t.host("maxtest_soak", voices=24) @@ -817,13 +1106,48 @@ def soak(minutes: float) -> Test: for py in (host, census, *blocks): t.patcher.connect(source, 0, py) - # each second: a real save of both files (so the module runs again), then every instance reloads — + # tap.python, answering a metro: each output checked against what was sent (plan 9.5) + control = t.control("maxtest_soak_control") + asking = t.patcher.box("metro 10", inlets=2, column=1) + counter = t.patcher.box("counter 0 100000000", inlets=3, outlets=4, column=1) + split = t.patcher.box("t i i", outlets=2, column=1) + sent = t.patcher.box("i", inlets=2, column=3) + t.patcher.connect(asking, 0, counter) + t.patcher.connect(counter, 0, split) + t.patcher.connect(split, 1, sent, 1) + t.patcher.connect(split, 0, control) + differs = t.patcher.box("!=", inlets=2, column=3) + answered = t.patcher.box("t i b", outlets=2, column=3) + t.patcher.connect(control, 0, answered) + t.patcher.connect(answered, 1, sent) + t.patcher.connect(sent, 0, differs, 1) + t.patcher.connect(answered, 0, differs) + mismatch = t.patcher.box("sel 1", inlets=2, outlets=2, column=3) + t.patcher.connect(differs, 0, mismatch) + wrong, right = t.output_count(mismatch, 0), t.output_count(control, 0) + asks = t.output_count(counter, 0) + # at the end: asked, less answered — read then, from both counts, so that neither is a step behind + asked_held, answered_held = t.patcher.box("i", inlets=2, column=3), t.patcher.box("i", inlets=2, column=3) + t.patcher.connect(asks, 0, asked_held, 1) + t.patcher.connect(right, 0, answered_held, 1) + unanswered = t.patcher.box("-", inlets=2, column=3) + t.patcher.connect(answered_held, 0, unanswered, 1) + t.patcher.connect(asked_held, 0, unanswered) + every_answered = t.patcher.box("t b b", outlets=2, column=3) + t.patcher.connect(every_answered, 1, answered_held) + t.patcher.connect(every_answered, 0, asked_held) + none_left = t.patcher.box("== 0", inlets=2, column=3) + t.patcher.connect(unanswered, 0, none_left) + t._assert("control-answered-every-message", none_left) + + # each second: a real save of the files (so the module runs again), then every instance reloads — # the file watcher coalesces saves this close together, so it is not left to deliver them reload_all = t.patcher.message("filechanged", column=1) - for py in (host, census, *blocks): + for py in (host, census, *blocks, control): t.patcher.connect(reload_all, 0, py) saves_start, saves_stop = t.metro(1000, t.send("bump maxtest_soak", editor), - t.send("bump maxtest_soak_block", editor), reload_all) + t.send("bump maxtest_soak_block", editor), + t.send("bump maxtest_soak_control", editor), reload_all) minute_start, minute_stop = t.metro(60_000, t.send("census", census), t.log_attribute("executions", census, "executions"), t.log_attribute("objects", census, "objects"), t.cpu_reading("cpu")) @@ -836,7 +1160,7 @@ def audio_flowed(n: int) -> list[str]: # the watchers pass vacuously if no audi t.step(t.send("resampling 0", host), t.send("target 0", host)) # constants pass unchanged; to every voice t.step(t.cpu_reading("cpu-quiet"), wait=30_000) # 33 objects running, nothing else going on - t.step(phases[0][0][0], phases[0][1][0], saves_start, minute_start) + t.step(phases[0][0][0], phases[0][1][0], saves_start, minute_start, t.send("1", asking)) t.step(audio_flowed(1), wait=third - 200) t.step(phases[0][0][1], phases[0][1][1], t.send("up 2", host), t.dsp(False)) t.step(t.dsp(True), wait=100) @@ -846,10 +1170,13 @@ def audio_flowed(n: int) -> list[str]: # the watchers pass vacuously if no audi t.step(t.dsp(True), wait=100) t.step(phases[2][0][0], phases[2][1][0], wait=1500) t.step(audio_flowed(3), wait=third - 1800) - t.step(phases[2][0][1], phases[2][1][1], saves_stop, minute_stop) + t.step(phases[2][0][1], phases[2][1][1], saves_stop, minute_stop, t.send("0", asking)) t.step(t.send("census", census), t.log_attribute("executions", census, "executions"), t.log_attribute("objects", census, "objects"), t.attribute_compare("saves-ran-the-module-again", census, "executions", f">= {saves * 9 // 10}"), + t.count_is("control-every-output-its-input", wrong, "== 0"), + t.count_is("control-answered", right, f">= {duration // 10 * 8 // 10}"), + every_answered, t.errors_are("console-clean", "== 0"), wait=WATCH) return t @@ -920,6 +1247,8 @@ def without_runtime_restart() -> Test: TESTS_TO_WRITE = [load, attributes_and_messages, reload, reload_under_audio, many_instances, channels, announce_once, faults, prepare, worker, multichannel, + control_load, control_outputs, control_messages, control_reload, control_shared, + control_threads, control_faults, without_runtime, without_runtime_restart] diff --git a/runtime-tests/patchers/soak/tap.python~.soak.maxpat b/runtime-tests/patchers/soak/tap.python~.soak.maxpat index 45f6c2a..d0474c4 100644 --- a/runtime-tests/patchers/soak/tap.python~.soak.maxpat +++ b/runtime-tests/patchers/soak/tap.python~.soak.maxpat @@ -35,7 +35,7 @@ 480, 80.0 ], - "text": "soak/tap.python~.soak\n\nThe soak (plan 6.2): 60 minutes of audio through 24 per-sample instances of one class (in a poly~), one more at top level, and 8 block-path instances of another; every second maxtest_editor saves both files with a new revision and every instance is told to reload. A third of the way through the poly~ changes its sample rate (up 2), and back at two thirds. Every output sample must stay exact in each phase, the console clean, and the saves must have run the module again. Logged: Max's DSP CPU after 30 quiet seconds (no reloads, to compare with core/bench) and then each minute, with the module's executions and Python's object count.", + "text": "soak/tap.python~.soak\n\nThe soak (plan 6.2): 60 minutes of audio through 24 per-sample instances of one class (in a poly~), one more at top level, and 8 block-path instances of another; every second maxtest_editor saves both files with a new revision and every instance is told to reload. A third of the way through the poly~ changes its sample rate (up 2), and back at two thirds. Every output sample must stay exact in each phase, the console clean, and the saves must have run the module again. And a tap.python (plan 9.5), answering a metro every 10 ms with what it is given while its file is saved and reloaded every second too: every output checked against its input, none missing but a few. Logged: Max's DSP CPU after 30 quiet seconds (no reloads, to compare with core/bench) and then each minute, with the module's executions and Python's object count.", "linecount": 4 } }, @@ -258,25 +258,26 @@ { "box": { "id": "obj-14", - "maxclass": "message", - "numinlets": 2, - "numoutlets": 1, + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, "outlettype": [ + "", "" ], "patching_rect": [ - 270.0, - 50.0, - 93.0, + 520.0, + 350.0, + 233.0, 22.0 ], - "text": "filechanged" + "text": "tap.python maxtest_soak_control" } }, { "box": { "id": "obj-15", - "maxclass": "message", + "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, "outlettype": [ @@ -284,121 +285,125 @@ ], "patching_rect": [ 270.0, - 80.0, - 135.0, + 50.0, + 72.0, 22.0 ], - "text": "bump maxtest_soak" + "text": "metro 10" } }, { "box": { "id": "obj-16", - "maxclass": "message", - "numinlets": 2, - "numoutlets": 1, + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, "outlettype": [ + "", + "", + "", "" ], "patching_rect": [ 270.0, - 110.0, - 177.0, + 80.0, + 149.0, 22.0 ], - "text": "bump maxtest_soak_block" + "text": "counter 0 100000000" } }, { "box": { "id": "obj-17", "maxclass": "newobj", - "numinlets": 2, - "numoutlets": 1, + "numinlets": 1, + "numoutlets": 2, "outlettype": [ + "", "" ], "patching_rect": [ 270.0, - 140.0, - 86.0, + 110.0, + 51.0, 22.0 ], - "text": "metro 1000" + "text": "t i i" } }, { "box": { "id": "obj-18", "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 3, + "numinlets": 2, + "numoutlets": 1, "outlettype": [ - "", - "", "" ], "patching_rect": [ - 270.0, - 170.0, - 65.0, + 770.0, + 20.0, + 40.0, 22.0 ], - "text": "t b b b" + "text": "i" } }, { "box": { "id": "obj-19", - "maxclass": "message", + "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 270.0, - 200.0, + 770.0, + 50.0, 40.0, 22.0 ], - "text": "1" + "text": "!=" } }, { "box": { "id": "obj-20", - "maxclass": "message", - "numinlets": 2, - "numoutlets": 1, + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, "outlettype": [ + "", "" ], "patching_rect": [ - 270.0, - 230.0, - 40.0, + 770.0, + 80.0, + 51.0, 22.0 ], - "text": "0" + "text": "t i b" } }, { "box": { "id": "obj-21", - "maxclass": "message", + "maxclass": "newobj", "numinlets": 2, - "numoutlets": 1, + "numoutlets": 2, "outlettype": [ + "", "" ], "patching_rect": [ - 270.0, - 260.0, - 58.0, + 770.0, + 110.0, + 51.0, 22.0 ], - "text": "census" + "text": "sel 1" } }, { @@ -406,37 +411,38 @@ "id": "obj-22", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 3, + "numoutlets": 1, "outlettype": [ - "", - "", "" ], "patching_rect": [ - 1020.0, - 20.0, - 212.0, + 770.0, + 140.0, + 40.0, 22.0 ], - "text": "getattr executions @listen 0" + "text": "t b" } }, { "box": { "id": "obj-23", "maxclass": "newobj", - "numinlets": 2, - "numoutlets": 1, + "numinlets": 3, + "numoutlets": 4, "outlettype": [ + "", + "", + "", "" ], "patching_rect": [ - 1020.0, - 50.0, - 142.0, + 770.0, + 170.0, + 135.0, 22.0 ], - "text": "prepend executions" + "text": "counter 1 1000000" } }, { @@ -444,130 +450,118 @@ "id": "obj-24", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 0, - "outlettype": [], + "numoutlets": 1, + "outlettype": [ + "" + ], "patching_rect": [ - 1020.0, - 80.0, - 128.0, + 770.0, + 200.0, + 40.0, 22.0 ], - "text": "test.log measure" + "text": "t b" } }, { "box": { "id": "obj-25", "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 3, + "numinlets": 3, + "numoutlets": 4, "outlettype": [ + "", "", "", "" ], "patching_rect": [ - 1020.0, - 110.0, - 191.0, + 770.0, + 230.0, + 135.0, 22.0 ], - "text": "getattr objects @listen 0" + "text": "counter 1 1000000" } }, { "box": { "id": "obj-26", "maxclass": "newobj", - "numinlets": 2, + "numinlets": 1, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 1020.0, - 140.0, - 121.0, + 770.0, + 260.0, + 40.0, 22.0 ], - "text": "prepend objects" + "text": "t b" } }, { "box": { "id": "obj-27", "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 0, - "outlettype": [], - "patching_rect": [ - 1020.0, - 170.0, - 128.0, - 22.0 - ], - "text": "test.log measure" - } - }, - { - "box": { - "id": "obj-28", - "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 3, + "numinlets": 3, + "numoutlets": 4, "outlettype": [ + "", "", "", "" ], "patching_rect": [ - 1020.0, - 200.0, - 65.0, + 770.0, + 290.0, + 135.0, 22.0 ], - "text": "t b b b" + "text": "counter 1 1000000" } }, { "box": { - "id": "obj-29", - "maxclass": "message", + "id": "obj-28", + "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 1020.0, - 230.0, + 770.0, + 320.0, 40.0, 22.0 ], - "text": "1" + "text": "i" } }, { "box": { - "id": "obj-30", - "maxclass": "message", + "id": "obj-29", + "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 1020.0, - 260.0, + 770.0, + 350.0, 40.0, 22.0 ], - "text": "0" + "text": "i" } }, { "box": { - "id": "obj-31", + "id": "obj-30", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -575,17 +569,17 @@ "" ], "patching_rect": [ - 1020.0, - 290.0, - 44.0, + 770.0, + 380.0, + 40.0, 22.0 ], - "text": "gate" + "text": "-" } }, { "box": { - "id": "obj-32", + "id": "obj-31", "maxclass": "newobj", "numinlets": 1, "numoutlets": 2, @@ -594,17 +588,17 @@ "" ], "patching_rect": [ - 1020.0, - 320.0, - 100.0, + 770.0, + 410.0, + 51.0, 22.0 ], - "text": "adstatus cpu" + "text": "t b b" } }, { "box": { - "id": "obj-33", + "id": "obj-32", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -612,34 +606,36 @@ "" ], "patching_rect": [ - 1020.0, - 350.0, - 93.0, + 770.0, + 440.0, + 44.0, 22.0 ], - "text": "prepend cpu" + "text": "== 0" } }, { "box": { - "id": "obj-34", + "id": "obj-33", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 0, - "outlettype": [], + "numoutlets": 1, + "outlettype": [ + "" + ], "patching_rect": [ - 1020.0, - 380.0, - 128.0, + 770.0, + 470.0, + 310.0, 22.0 ], - "text": "test.log measure" + "text": "test.assert control-answered-every-message" } }, { "box": { - "id": "obj-35", - "maxclass": "newobj", + "id": "obj-34", + "maxclass": "message", "numinlets": 2, "numoutlets": 1, "outlettype": [ @@ -647,32 +643,47 @@ ], "patching_rect": [ 270.0, - 290.0, + 140.0, 93.0, 22.0 ], - "text": "metro 60000" + "text": "filechanged" + } + }, + { + "box": { + "id": "obj-35", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 170.0, + 135.0, + 22.0 + ], + "text": "bump maxtest_soak" } }, { "box": { "id": "obj-36", - "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 4, + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, "outlettype": [ - "", - "", - "", "" ], "patching_rect": [ 270.0, - 320.0, - 79.0, + 200.0, + 177.0, 22.0 ], - "text": "t b b b b" + "text": "bump maxtest_soak_block" } }, { @@ -686,17 +697,17 @@ ], "patching_rect": [ 270.0, - 350.0, - 40.0, + 230.0, + 191.0, 22.0 ], - "text": "1" + "text": "bump maxtest_soak_control" } }, { "box": { "id": "obj-38", - "maxclass": "message", + "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, "outlettype": [ @@ -704,138 +715,140 @@ ], "patching_rect": [ 270.0, - 380.0, - 40.0, + 260.0, + 86.0, 22.0 ], - "text": "0" + "text": "metro 1000" } }, { "box": { "id": "obj-39", "maxclass": "newobj", - "numinlets": 2, - "numoutlets": 1, + "numinlets": 1, + "numoutlets": 4, "outlettype": [ - "signal" + "", + "", + "", + "" ], "patching_rect": [ - 770.0, - 20.0, - 72.0, + 270.0, + 290.0, + 79.0, 22.0 ], - "text": "!=~ 24.0" + "text": "t b b b b" } }, { "box": { "id": "obj-40", - "maxclass": "newobj", + "maxclass": "message", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 770.0, - 50.0, - 72.0, + 270.0, + 320.0, + 40.0, 22.0 ], - "text": "peakamp~" + "text": "1" } }, { "box": { "id": "obj-41", - "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 2, + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, "outlettype": [ - "", "" ], "patching_rect": [ - 770.0, - 80.0, - 51.0, + 270.0, + 350.0, + 40.0, 22.0 ], - "text": "t b b" + "text": "0" } }, { "box": { "id": "obj-42", - "maxclass": "newobj", - "numinlets": 1, + "maxclass": "message", + "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 770.0, - 110.0, - 40.0, + 270.0, + 380.0, + 58.0, 22.0 ], - "text": "t b" + "text": "census" } }, { "box": { "id": "obj-43", "maxclass": "newobj", - "numinlets": 2, - "numoutlets": 1, + "numinlets": 1, + "numoutlets": 3, "outlettype": [ + "", + "", "" ], "patching_rect": [ - 770.0, - 140.0, - 44.0, + 1020.0, + 20.0, + 212.0, 22.0 ], - "text": "gate" + "text": "getattr executions @listen 0" } }, { "box": { "id": "obj-44", - "maxclass": "message", + "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 770.0, - 170.0, - 40.0, + 1020.0, + 50.0, + 142.0, 22.0 ], - "text": "1" + "text": "prepend executions" } }, { "box": { "id": "obj-45", "maxclass": "newobj", - "numinlets": 2, - "numoutlets": 1, - "outlettype": [ - "" - ], + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], "patching_rect": [ - 770.0, - 200.0, - 44.0, + 1020.0, + 80.0, + 128.0, 22.0 ], - "text": "== 0" + "text": "test.log measure" } }, { @@ -843,17 +856,19 @@ "id": "obj-46", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 1, + "numoutlets": 3, "outlettype": [ + "", + "", "" ], "patching_rect": [ - 770.0, - 230.0, - 387.0, + 1020.0, + 110.0, + 191.0, 22.0 ], - "text": "test.assert phase-1-poly-per-sample-never-interrupted" + "text": "getattr objects @listen 0" } }, { @@ -863,33 +878,31 @@ "numinlets": 2, "numoutlets": 1, "outlettype": [ - "signal" + "" ], "patching_rect": [ - 770.0, - 260.0, - 65.0, + 1020.0, + 140.0, + 121.0, 22.0 ], - "text": "!=~ 8.0" + "text": "prepend objects" } }, { "box": { "id": "obj-48", "maxclass": "newobj", - "numinlets": 2, - "numoutlets": 1, - "outlettype": [ - "" - ], + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], "patching_rect": [ - 770.0, - 290.0, - 72.0, + 1020.0, + 170.0, + 128.0, 22.0 ], - "text": "peakamp~" + "text": "test.log measure" } }, { @@ -897,126 +910,126 @@ "id": "obj-49", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 2, + "numoutlets": 3, "outlettype": [ + "", "", "" ], "patching_rect": [ - 770.0, - 320.0, - 51.0, + 1020.0, + 200.0, + 65.0, 22.0 ], - "text": "t b b" + "text": "t b b b" } }, { "box": { "id": "obj-50", - "maxclass": "newobj", - "numinlets": 1, + "maxclass": "message", + "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 770.0, - 350.0, + 1020.0, + 230.0, 40.0, 22.0 ], - "text": "t b" + "text": "1" } }, { "box": { "id": "obj-51", - "maxclass": "newobj", + "maxclass": "message", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 770.0, - 380.0, - 44.0, + 1020.0, + 260.0, + 40.0, 22.0 ], - "text": "gate" + "text": "0" } }, { "box": { "id": "obj-52", - "maxclass": "message", + "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 770.0, - 410.0, - 40.0, + 1020.0, + 290.0, + 44.0, 22.0 ], - "text": "1" + "text": "gate" } }, { "box": { "id": "obj-53", "maxclass": "newobj", - "numinlets": 2, - "numoutlets": 1, + "numinlets": 1, + "numoutlets": 2, "outlettype": [ + "", "" ], "patching_rect": [ - 770.0, - 440.0, - 44.0, + 1020.0, + 320.0, + 100.0, 22.0 ], - "text": "== 0" + "text": "adstatus cpu" } }, { "box": { "id": "obj-54", "maxclass": "newobj", - "numinlets": 1, + "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 770.0, - 470.0, - 352.0, + 1020.0, + 350.0, + 93.0, 22.0 ], - "text": "test.assert phase-1-block-path-never-interrupted" + "text": "prepend cpu" } }, { "box": { "id": "obj-55", "maxclass": "newobj", - "numinlets": 2, - "numoutlets": 1, - "outlettype": [ - "signal" - ], + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], "patching_rect": [ - 770.0, - 500.0, - 72.0, + 1020.0, + 380.0, + 128.0, 22.0 ], - "text": "!=~ 24.0" + "text": "test.log measure" } }, { @@ -1028,6 +1041,99 @@ "outlettype": [ "" ], + "patching_rect": [ + 270.0, + 410.0, + 93.0, + 22.0 + ], + "text": "metro 60000" + } + }, + { + "box": { + "id": "obj-57", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 270.0, + 440.0, + 79.0, + 22.0 + ], + "text": "t b b b b" + } + }, + { + "box": { + "id": "obj-58", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 470.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-59", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 500.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-60", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "signal" + ], + "patching_rect": [ + 770.0, + 500.0, + 72.0, + 22.0 + ], + "text": "!=~ 24.0" + } + }, + { + "box": { + "id": "obj-61", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], "patching_rect": [ 770.0, 530.0, @@ -1039,7 +1145,7 @@ }, { "box": { - "id": "obj-57", + "id": "obj-62", "maxclass": "newobj", "numinlets": 1, "numoutlets": 2, @@ -1058,7 +1164,7 @@ }, { "box": { - "id": "obj-58", + "id": "obj-63", "maxclass": "newobj", "numinlets": 1, "numoutlets": 1, @@ -1076,7 +1182,7 @@ }, { "box": { - "id": "obj-59", + "id": "obj-64", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -1094,7 +1200,7 @@ }, { "box": { - "id": "obj-60", + "id": "obj-65", "maxclass": "message", "numinlets": 2, "numoutlets": 1, @@ -1112,7 +1218,7 @@ }, { "box": { - "id": "obj-61", + "id": "obj-66", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -1130,7 +1236,7 @@ }, { "box": { - "id": "obj-62", + "id": "obj-67", "maxclass": "newobj", "numinlets": 1, "numoutlets": 1, @@ -1143,12 +1249,12 @@ 387.0, 22.0 ], - "text": "test.assert phase-2-poly-per-sample-never-interrupted" + "text": "test.assert phase-1-poly-per-sample-never-interrupted" } }, { "box": { - "id": "obj-63", + "id": "obj-68", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -1166,7 +1272,7 @@ }, { "box": { - "id": "obj-64", + "id": "obj-69", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -1184,7 +1290,7 @@ }, { "box": { - "id": "obj-65", + "id": "obj-70", "maxclass": "newobj", "numinlets": 1, "numoutlets": 2, @@ -1203,7 +1309,7 @@ }, { "box": { - "id": "obj-66", + "id": "obj-71", "maxclass": "newobj", "numinlets": 1, "numoutlets": 1, @@ -1221,7 +1327,7 @@ }, { "box": { - "id": "obj-67", + "id": "obj-72", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -1239,7 +1345,7 @@ }, { "box": { - "id": "obj-68", + "id": "obj-73", "maxclass": "message", "numinlets": 2, "numoutlets": 1, @@ -1257,7 +1363,7 @@ }, { "box": { - "id": "obj-69", + "id": "obj-74", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -1275,7 +1381,7 @@ }, { "box": { - "id": "obj-70", + "id": "obj-75", "maxclass": "newobj", "numinlets": 1, "numoutlets": 1, @@ -1288,12 +1394,12 @@ 352.0, 22.0 ], - "text": "test.assert phase-2-block-path-never-interrupted" + "text": "test.assert phase-1-block-path-never-interrupted" } }, { "box": { - "id": "obj-71", + "id": "obj-76", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -1311,7 +1417,7 @@ }, { "box": { - "id": "obj-72", + "id": "obj-77", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -1329,7 +1435,7 @@ }, { "box": { - "id": "obj-73", + "id": "obj-78", "maxclass": "newobj", "numinlets": 1, "numoutlets": 2, @@ -1348,7 +1454,7 @@ }, { "box": { - "id": "obj-74", + "id": "obj-79", "maxclass": "newobj", "numinlets": 1, "numoutlets": 1, @@ -1366,7 +1472,7 @@ }, { "box": { - "id": "obj-75", + "id": "obj-80", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -1384,7 +1490,7 @@ }, { "box": { - "id": "obj-76", + "id": "obj-81", "maxclass": "message", "numinlets": 2, "numoutlets": 1, @@ -1402,7 +1508,7 @@ }, { "box": { - "id": "obj-77", + "id": "obj-82", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -1420,7 +1526,7 @@ }, { "box": { - "id": "obj-78", + "id": "obj-83", "maxclass": "newobj", "numinlets": 1, "numoutlets": 1, @@ -1433,12 +1539,12 @@ 387.0, 22.0 ], - "text": "test.assert phase-3-poly-per-sample-never-interrupted" + "text": "test.assert phase-2-poly-per-sample-never-interrupted" } }, { "box": { - "id": "obj-79", + "id": "obj-84", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -1456,7 +1562,7 @@ }, { "box": { - "id": "obj-80", + "id": "obj-85", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -1474,7 +1580,7 @@ }, { "box": { - "id": "obj-81", + "id": "obj-86", "maxclass": "newobj", "numinlets": 1, "numoutlets": 2, @@ -1493,7 +1599,7 @@ }, { "box": { - "id": "obj-82", + "id": "obj-87", "maxclass": "newobj", "numinlets": 1, "numoutlets": 1, @@ -1511,7 +1617,7 @@ }, { "box": { - "id": "obj-83", + "id": "obj-88", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -1529,7 +1635,7 @@ }, { "box": { - "id": "obj-84", + "id": "obj-89", "maxclass": "message", "numinlets": 2, "numoutlets": 1, @@ -1547,7 +1653,7 @@ }, { "box": { - "id": "obj-85", + "id": "obj-90", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -1565,7 +1671,7 @@ }, { "box": { - "id": "obj-86", + "id": "obj-91", "maxclass": "newobj", "numinlets": 1, "numoutlets": 1, @@ -1578,193 +1684,175 @@ 352.0, 22.0 ], - "text": "test.assert phase-3-block-path-never-interrupted" + "text": "test.assert phase-2-block-path-never-interrupted" } }, { "box": { - "id": "obj-87", - "maxclass": "message", + "id": "obj-92", + "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, "outlettype": [ - "" + "signal" ], "patching_rect": [ - 270.0, - 410.0, - 100.0, + 770.0, + 1460.0, + 72.0, 22.0 ], - "text": "resampling 0" + "text": "!=~ 24.0" } }, { "box": { - "id": "obj-88", - "maxclass": "message", + "id": "obj-93", + "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 270.0, - 440.0, + 770.0, + 1490.0, 72.0, 22.0 ], - "text": "target 0" + "text": "peakamp~" } }, { "box": { - "id": "obj-89", + "id": "obj-94", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 3, + "numoutlets": 2, "outlettype": [ - "", "", "" ], "patching_rect": [ - 1020.0, - 410.0, - 65.0, + 770.0, + 1520.0, + 51.0, 22.0 ], - "text": "t b b b" + "text": "t b b" } }, { "box": { - "id": "obj-90", - "maxclass": "message", - "numinlets": 2, + "id": "obj-95", + "maxclass": "newobj", + "numinlets": 1, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 1020.0, - 440.0, + 770.0, + 1550.0, 40.0, 22.0 ], - "text": "1" + "text": "t b" } }, { "box": { - "id": "obj-91", - "maxclass": "message", + "id": "obj-96", + "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 1020.0, - 470.0, - 40.0, + 770.0, + 1580.0, + 44.0, 22.0 ], - "text": "0" + "text": "gate" } }, { "box": { - "id": "obj-92", - "maxclass": "newobj", + "id": "obj-97", + "maxclass": "message", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 1020.0, - 500.0, - 44.0, + 770.0, + 1610.0, + 40.0, 22.0 ], - "text": "gate" + "text": "1" } }, { "box": { - "id": "obj-93", + "id": "obj-98", "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 2, + "numinlets": 2, + "numoutlets": 1, "outlettype": [ - "", "" ], "patching_rect": [ - 1020.0, - 530.0, - 100.0, + 770.0, + 1640.0, + 44.0, 22.0 ], - "text": "adstatus cpu" + "text": "== 0" } }, { "box": { - "id": "obj-94", + "id": "obj-99", "maxclass": "newobj", - "numinlets": 2, + "numinlets": 1, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 1020.0, - 560.0, - 135.0, - 22.0 - ], - "text": "prepend cpu-quiet" - } - }, - { - "box": { - "id": "obj-95", - "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 0, - "outlettype": [], - "patching_rect": [ - 1020.0, - 590.0, - 128.0, + 770.0, + 1670.0, + 387.0, 22.0 ], - "text": "test.log measure" + "text": "test.assert phase-3-poly-per-sample-never-interrupted" } }, { "box": { - "id": "obj-96", + "id": "obj-100", "maxclass": "newobj", - "numinlets": 1, + "numinlets": 2, "numoutlets": 1, "outlettype": [ - "" + "signal" ], "patching_rect": [ 770.0, - 1460.0, - 177.0, + 1700.0, + 65.0, 22.0 ], - "text": "test.sample~ @autorun 0" + "text": "!=~ 8.0" } }, { "box": { - "id": "obj-97", + "id": "obj-101", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -1773,34 +1861,35 @@ ], "patching_rect": [ 770.0, - 1490.0, - 128.0, + 1730.0, + 72.0, 22.0 ], - "text": "test.equals 24.0" + "text": "peakamp~" } }, { "box": { - "id": "obj-98", + "id": "obj-102", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 1, + "numoutlets": 2, "outlettype": [ + "", "" ], "patching_rect": [ 770.0, - 1520.0, - 233.0, + 1760.0, + 51.0, 22.0 ], - "text": "test.assert phase-1-poly-output" + "text": "t b b" } }, { "box": { - "id": "obj-99", + "id": "obj-103", "maxclass": "newobj", "numinlets": 1, "numoutlets": 1, @@ -1809,16 +1898,16 @@ ], "patching_rect": [ 770.0, - 1550.0, - 177.0, + 1790.0, + 40.0, 22.0 ], - "text": "test.sample~ @autorun 0" + "text": "t b" } }, { "box": { - "id": "obj-100", + "id": "obj-104", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -1827,70 +1916,70 @@ ], "patching_rect": [ 770.0, - 1580.0, - 121.0, + 1820.0, + 44.0, 22.0 ], - "text": "test.equals 1.0" + "text": "gate" } }, { "box": { - "id": "obj-101", - "maxclass": "newobj", - "numinlets": 1, + "id": "obj-105", + "maxclass": "message", + "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ 770.0, - 1610.0, - 240.0, + 1850.0, + 40.0, 22.0 ], - "text": "test.assert phase-1-block-output" + "text": "1" } }, { "box": { - "id": "obj-102", - "maxclass": "message", + "id": "obj-106", + "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 270.0, - 470.0, + 770.0, + 1880.0, 44.0, 22.0 ], - "text": "up 2" + "text": "== 0" } }, { "box": { - "id": "obj-103", - "maxclass": "message", - "numinlets": 2, + "id": "obj-107", + "maxclass": "newobj", + "numinlets": 1, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 270.0, - 500.0, - 86.0, + 770.0, + 1910.0, + 352.0, 22.0 ], - "text": "; dsp stop" + "text": "test.assert phase-3-block-path-never-interrupted" } }, { "box": { - "id": "obj-104", + "id": "obj-108", "maxclass": "message", "numinlets": 2, "numoutlets": 1, @@ -1900,87 +1989,89 @@ "patching_rect": [ 270.0, 530.0, - 93.0, + 100.0, 22.0 ], - "text": "; dsp start" + "text": "resampling 0" } }, { "box": { - "id": "obj-105", - "maxclass": "newobj", - "numinlets": 1, + "id": "obj-109", + "maxclass": "message", + "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 770.0, - 1640.0, - 177.0, + 270.0, + 560.0, + 72.0, 22.0 ], - "text": "test.sample~ @autorun 0" + "text": "target 0" } }, { "box": { - "id": "obj-106", + "id": "obj-110", "maxclass": "newobj", - "numinlets": 2, - "numoutlets": 1, + "numinlets": 1, + "numoutlets": 3, "outlettype": [ + "", + "", "" ], "patching_rect": [ - 770.0, - 1670.0, - 128.0, + 1020.0, + 410.0, + 65.0, 22.0 ], - "text": "test.equals 24.0" + "text": "t b b b" } }, { "box": { - "id": "obj-107", - "maxclass": "newobj", - "numinlets": 1, + "id": "obj-111", + "maxclass": "message", + "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 770.0, - 1700.0, - 233.0, + 1020.0, + 440.0, + 40.0, 22.0 ], - "text": "test.assert phase-2-poly-output" + "text": "1" } }, { "box": { - "id": "obj-108", - "maxclass": "newobj", - "numinlets": 1, + "id": "obj-112", + "maxclass": "message", + "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 770.0, - 1730.0, - 177.0, + 1020.0, + 470.0, + 40.0, 22.0 ], - "text": "test.sample~ @autorun 0" + "text": "0" } }, { "box": { - "id": "obj-109", + "id": "obj-113", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -1988,71 +2079,70 @@ "" ], "patching_rect": [ - 770.0, - 1760.0, - 121.0, + 1020.0, + 500.0, + 44.0, 22.0 ], - "text": "test.equals 1.0" + "text": "gate" } }, { "box": { - "id": "obj-110", + "id": "obj-114", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 1, + "numoutlets": 2, "outlettype": [ + "", "" ], "patching_rect": [ - 770.0, - 1790.0, - 240.0, + 1020.0, + 530.0, + 100.0, 22.0 ], - "text": "test.assert phase-2-block-output" + "text": "adstatus cpu" } }, { "box": { - "id": "obj-111", - "maxclass": "message", + "id": "obj-115", + "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 270.0, + 1020.0, 560.0, - 44.0, + 135.0, 22.0 ], - "text": "up 1" + "text": "prepend cpu-quiet" } }, { "box": { - "id": "obj-112", - "maxclass": "message", - "numinlets": 2, - "numoutlets": 1, - "outlettype": [ - "" - ], + "id": "obj-116", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], "patching_rect": [ - 270.0, + 1020.0, 590.0, - 86.0, + 128.0, 22.0 ], - "text": "; dsp stop" + "text": "test.log measure" } }, { "box": { - "id": "obj-113", + "id": "obj-117", "maxclass": "message", "numinlets": 2, "numoutlets": 1, @@ -2061,16 +2151,16 @@ ], "patching_rect": [ 270.0, - 620.0, - 93.0, + 590.0, + 40.0, 22.0 ], - "text": "; dsp start" + "text": "1" } }, { "box": { - "id": "obj-114", + "id": "obj-118", "maxclass": "newobj", "numinlets": 1, "numoutlets": 1, @@ -2079,7 +2169,7 @@ ], "patching_rect": [ 770.0, - 1820.0, + 1940.0, 177.0, 22.0 ], @@ -2088,7 +2178,7 @@ }, { "box": { - "id": "obj-115", + "id": "obj-119", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -2097,7 +2187,7 @@ ], "patching_rect": [ 770.0, - 1850.0, + 1970.0, 128.0, 22.0 ], @@ -2106,7 +2196,7 @@ }, { "box": { - "id": "obj-116", + "id": "obj-120", "maxclass": "newobj", "numinlets": 1, "numoutlets": 1, @@ -2115,16 +2205,16 @@ ], "patching_rect": [ 770.0, - 1880.0, + 2000.0, 233.0, 22.0 ], - "text": "test.assert phase-3-poly-output" + "text": "test.assert phase-1-poly-output" } }, { "box": { - "id": "obj-117", + "id": "obj-121", "maxclass": "newobj", "numinlets": 1, "numoutlets": 1, @@ -2133,7 +2223,7 @@ ], "patching_rect": [ 770.0, - 1910.0, + 2030.0, 177.0, 22.0 ], @@ -2142,7 +2232,7 @@ }, { "box": { - "id": "obj-118", + "id": "obj-122", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -2151,7 +2241,7 @@ ], "patching_rect": [ 770.0, - 1940.0, + 2060.0, 121.0, 22.0 ], @@ -2160,7 +2250,7 @@ }, { "box": { - "id": "obj-119", + "id": "obj-123", "maxclass": "newobj", "numinlets": 1, "numoutlets": 1, @@ -2169,16 +2259,16 @@ ], "patching_rect": [ 770.0, - 1970.0, + 2090.0, 240.0, 22.0 ], - "text": "test.assert phase-3-block-output" + "text": "test.assert phase-1-block-output" } }, { "box": { - "id": "obj-120", + "id": "obj-124", "maxclass": "message", "numinlets": 2, "numoutlets": 1, @@ -2187,119 +2277,47 @@ ], "patching_rect": [ 270.0, - 650.0, - 58.0, - 22.0 - ], - "text": "census" - } - }, - { - "box": { - "id": "obj-121", - "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 3, - "outlettype": [ - "", - "", - "" - ], - "patching_rect": [ - 1020.0, 620.0, - 212.0, + 44.0, 22.0 ], - "text": "getattr executions @listen 0" + "text": "up 2" } }, { "box": { - "id": "obj-122", - "maxclass": "newobj", + "id": "obj-125", + "maxclass": "message", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 1020.0, + 270.0, 650.0, - 142.0, - 22.0 - ], - "text": "prepend executions" - } - }, - { - "box": { - "id": "obj-123", - "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 0, - "outlettype": [], - "patching_rect": [ - 1020.0, - 680.0, - 128.0, - 22.0 - ], - "text": "test.log measure" - } - }, - { - "box": { - "id": "obj-124", - "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 3, - "outlettype": [ - "", - "", - "" - ], - "patching_rect": [ - 1020.0, - 710.0, - 191.0, + 86.0, 22.0 ], - "text": "getattr objects @listen 0" + "text": "; dsp stop" } }, { "box": { - "id": "obj-125", - "maxclass": "newobj", + "id": "obj-126", + "maxclass": "message", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 1020.0, - 740.0, - 121.0, - 22.0 - ], - "text": "prepend objects" - } - }, - { - "box": { - "id": "obj-126", - "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 0, - "outlettype": [], - "patching_rect": [ - 1020.0, - 770.0, - 128.0, + 270.0, + 680.0, + 93.0, 22.0 ], - "text": "test.log measure" + "text": "; dsp start" } }, { @@ -2307,19 +2325,17 @@ "id": "obj-127", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 3, + "numoutlets": 1, "outlettype": [ - "", - "", "" ], "patching_rect": [ 770.0, - 2000.0, - 212.0, + 2120.0, + 177.0, 22.0 ], - "text": "getattr executions @listen 0" + "text": "test.sample~ @autorun 0" } }, { @@ -2333,11 +2349,11 @@ ], "patching_rect": [ 770.0, - 2030.0, - 65.0, + 2150.0, + 128.0, 22.0 ], - "text": ">= 3240" + "text": "test.equals 24.0" } }, { @@ -2351,11 +2367,11 @@ ], "patching_rect": [ 770.0, - 2060.0, - 282.0, + 2180.0, + 233.0, 22.0 ], - "text": "test.assert saves-ran-the-module-again" + "text": "test.assert phase-2-poly-output" } }, { @@ -2368,105 +2384,102 @@ "" ], "patching_rect": [ - 1020.0, - 800.0, - 65.0, + 770.0, + 2210.0, + 177.0, 22.0 ], - "text": "error 1" + "text": "test.sample~ @autorun 0" } }, { "box": { "id": "obj-131", "maxclass": "newobj", - "numinlets": 1, + "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 1020.0, - 830.0, - 40.0, + 770.0, + 2240.0, + 121.0, 22.0 ], - "text": "t b" + "text": "test.equals 1.0" } }, { "box": { "id": "obj-132", "maxclass": "newobj", - "numinlets": 3, - "numoutlets": 4, + "numinlets": 1, + "numoutlets": 1, "outlettype": [ - "", - "", - "", "" ], "patching_rect": [ - 1020.0, - 860.0, - 135.0, + 770.0, + 2270.0, + 240.0, 22.0 ], - "text": "counter 1 1000000" + "text": "test.assert phase-2-block-output" } }, { "box": { "id": "obj-133", - "maxclass": "newobj", + "maxclass": "message", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 1020.0, - 890.0, - 40.0, + 270.0, + 710.0, + 44.0, 22.0 ], - "text": "i" + "text": "up 1" } }, { "box": { "id": "obj-134", - "maxclass": "newobj", + "maxclass": "message", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 1020.0, - 920.0, - 44.0, + 270.0, + 740.0, + 86.0, 22.0 ], - "text": "== 0" + "text": "; dsp stop" } }, { "box": { "id": "obj-135", - "maxclass": "newobj", - "numinlets": 1, + "maxclass": "message", + "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ + 270.0, 770.0, - 2090.0, - 191.0, + 93.0, 22.0 ], - "text": "test.assert console-clean" + "text": "; dsp start" } }, { @@ -2474,33 +2487,35 @@ "id": "obj-136", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 0, - "outlettype": [], + "numoutlets": 1, + "outlettype": [ + "" + ], "patching_rect": [ - 20.0, - 108.0, - 114.0, + 770.0, + 2300.0, + 177.0, 22.0 ], - "text": "test.terminate" + "text": "test.sample~ @autorun 0" } }, { "box": { "id": "obj-137", "maxclass": "newobj", - "numinlets": 1, + "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 1020.0, - 950.0, - 72.0, + 770.0, + 2330.0, + 128.0, 22.0 ], - "text": "tosymbol" + "text": "test.equals 24.0" } }, { @@ -2508,21 +2523,17 @@ "id": "obj-138", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 5, + "numoutlets": 1, "outlettype": [ - "", - "", - "", - "", "" ], "patching_rect": [ - 1020.0, - 980.0, - 177.0, + 770.0, + 2360.0, + 233.0, 22.0 ], - "text": "regexp \\\" @substitute '" + "text": "test.assert phase-3-poly-output" } }, { @@ -2535,88 +2546,84 @@ "" ], "patching_rect": [ - 1020.0, - 1010.0, - 86.0, + 770.0, + 2390.0, + 177.0, 22.0 ], - "text": "fromsymbol" + "text": "test.sample~ @autorun 0" } }, { "box": { "id": "obj-140", "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 2, + "numinlets": 2, + "numoutlets": 1, "outlettype": [ - "", "" ], "patching_rect": [ - 1020.0, - 1040.0, - 51.0, + 770.0, + 2420.0, + 121.0, 22.0 ], - "text": "t l b" + "text": "test.equals 1.0" } }, { "box": { "id": "obj-141", "maxclass": "newobj", - "numinlets": 3, - "numoutlets": 4, + "numinlets": 1, + "numoutlets": 1, "outlettype": [ - "", - "", - "", "" ], "patching_rect": [ - 1020.0, - 1070.0, - 135.0, + 770.0, + 2450.0, + 240.0, 22.0 ], - "text": "counter 1 1000000" + "text": "test.assert phase-3-block-output" } }, { "box": { "id": "obj-142", - "maxclass": "newobj", + "maxclass": "message", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 1020.0, - 1100.0, - 51.0, - 22.0 - ], - "text": "<= 50" + 270.0, + 800.0, + 40.0, + 22.0 + ], + "text": "0" } }, { "box": { "id": "obj-143", - "maxclass": "newobj", + "maxclass": "message", "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 1020.0, - 1130.0, - 72.0, + 270.0, + 830.0, + 58.0, 22.0 ], - "text": "gate 1 1" + "text": "census" } }, { @@ -2624,33 +2631,37 @@ "id": "obj-144", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 0, - "outlettype": [], + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], "patching_rect": [ 1020.0, - 1160.0, - 170.0, + 620.0, + 212.0, 22.0 ], - "text": "test.log console-error" + "text": "getattr executions @listen 0" } }, { "box": { "id": "obj-145", "maxclass": "newobj", - "numinlets": 1, + "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 20.0, - 138.0, - 72.0, + 1020.0, + 650.0, + 142.0, 22.0 ], - "text": "loadbang" + "text": "prepend executions" } }, { @@ -2658,36 +2669,35 @@ "id": "obj-146", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 2, - "outlettype": [ - "", - "" - ], + "numoutlets": 0, + "outlettype": [], "patching_rect": [ - 20.0, - 168.0, - 51.0, + 1020.0, + 680.0, + 128.0, 22.0 ], - "text": "t b b" + "text": "test.log measure" } }, { "box": { "id": "obj-147", - "maxclass": "message", - "numinlets": 2, - "numoutlets": 1, + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, "outlettype": [ + "", + "", "" ], "patching_rect": [ - 20.0, - 198.0, - 93.0, + 1020.0, + 710.0, + 191.0, 22.0 ], - "text": "; dsp start" + "text": "getattr objects @listen 0" } }, { @@ -2700,12 +2710,12 @@ "" ], "patching_rect": [ - 20.0, - 228.0, - 107.0, + 1020.0, + 740.0, + 121.0, 22.0 ], - "text": "delay 3780000" + "text": "prepend objects" } }, { @@ -2713,39 +2723,35 @@ "id": "obj-149", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 4, - "outlettype": [ - "", - "", - "", - "" - ], + "numoutlets": 0, + "outlettype": [], "patching_rect": [ - 20.0, - 258.0, - 79.0, + 1020.0, + 770.0, + 128.0, 22.0 ], - "text": "dspstate~" + "text": "test.log measure" } }, { "box": { "id": "obj-150", "maxclass": "newobj", - "numinlets": 2, - "numoutlets": 2, + "numinlets": 1, + "numoutlets": 3, "outlettype": [ + "", "", "" ], "patching_rect": [ - 20.0, - 288.0, - 51.0, + 770.0, + 2480.0, + 212.0, 22.0 ], - "text": "sel 1" + "text": "getattr executions @listen 0" } }, { @@ -2753,54 +2759,53 @@ "id": "obj-151", "maxclass": "newobj", "numinlets": 2, - "numoutlets": 2, + "numoutlets": 1, "outlettype": [ - "", "" ], "patching_rect": [ - 20.0, - 318.0, - 79.0, + 770.0, + 2510.0, + 65.0, 22.0 ], - "text": "onebang 1" + "text": ">= 3240" } }, { "box": { "id": "obj-152", - "maxclass": "message", - "numinlets": 2, + "maxclass": "newobj", + "numinlets": 1, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 20.0, - 348.0, - 40.0, + 770.0, + 2540.0, + 282.0, 22.0 ], - "text": "1" + "text": "test.assert saves-ran-the-module-again" } }, { "box": { "id": "obj-153", "maxclass": "newobj", - "numinlets": 1, + "numinlets": 2, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ 770.0, - 2120.0, - 191.0, + 2570.0, + 40.0, 22.0 ], - "text": "test.assert audio-started" + "text": "i" } }, { @@ -2813,12 +2818,12 @@ "" ], "patching_rect": [ - 20.0, - 378.0, - 79.0, + 770.0, + 2600.0, + 44.0, 22.0 ], - "text": "delay 150" + "text": "== 0" } }, { @@ -2826,19 +2831,17 @@ "id": "obj-155", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 3, + "numoutlets": 1, "outlettype": [ - "", - "", "" ], "patching_rect": [ - 20.0, - 408.0, - 65.0, + 770.0, + 2630.0, + 310.0, 22.0 ], - "text": "t b b b" + "text": "test.assert control-every-output-its-input" } }, { @@ -2851,49 +2854,48 @@ "" ], "patching_rect": [ - 20.0, - 438.0, - 93.0, + 770.0, + 2660.0, + 40.0, 22.0 ], - "text": "delay 30000" + "text": "i" } }, { "box": { "id": "obj-157", "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 2, + "numinlets": 2, + "numoutlets": 1, "outlettype": [ - "", "" ], "patching_rect": [ - 20.0, - 468.0, - 51.0, + 770.0, + 2690.0, + 79.0, 22.0 ], - "text": "t b b" + "text": ">= 288000" } }, { "box": { "id": "obj-158", "maxclass": "newobj", - "numinlets": 2, + "numinlets": 1, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 20.0, - 498.0, - 79.0, + 770.0, + 2720.0, + 212.0, 22.0 ], - "text": "delay 150" + "text": "test.assert control-answered" } }, { @@ -2901,59 +2903,56 @@ "id": "obj-159", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 5, + "numoutlets": 1, "outlettype": [ - "", - "", - "", - "", "" ], "patching_rect": [ - 20.0, - 528.0, - 93.0, + 1020.0, + 800.0, + 65.0, 22.0 ], - "text": "t b b b b b" + "text": "error 1" } }, { "box": { "id": "obj-160", "maxclass": "newobj", - "numinlets": 2, + "numinlets": 1, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 20.0, - 558.0, - 107.0, + 1020.0, + 830.0, + 40.0, 22.0 ], - "text": "delay 1199800" + "text": "t b" } }, { "box": { "id": "obj-161", "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 3, + "numinlets": 3, + "numoutlets": 4, "outlettype": [ + "", "", "", "" ], "patching_rect": [ - 20.0, - 588.0, - 65.0, + 1020.0, + 860.0, + 135.0, 22.0 ], - "text": "t b b b" + "text": "counter 1 1000000" } }, { @@ -2966,52 +2965,48 @@ "" ], "patching_rect": [ - 20.0, - 618.0, - 79.0, + 1020.0, + 890.0, + 40.0, 22.0 ], - "text": "delay 150" + "text": "i" } }, { "box": { "id": "obj-163", "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 5, + "numinlets": 2, + "numoutlets": 1, "outlettype": [ - "", - "", - "", - "", "" ], "patching_rect": [ - 20.0, - 648.0, - 93.0, + 1020.0, + 920.0, + 44.0, 22.0 ], - "text": "t b b b b b" + "text": "== 0" } }, { "box": { "id": "obj-164", "maxclass": "newobj", - "numinlets": 2, + "numinlets": 1, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 20.0, - 678.0, - 79.0, + 770.0, + 2750.0, + 191.0, 22.0 ], - "text": "delay 100" + "text": "test.assert console-clean" } }, { @@ -3019,36 +3014,33 @@ "id": "obj-165", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 2, - "outlettype": [ - "", - "" - ], + "numoutlets": 0, + "outlettype": [], "patching_rect": [ 20.0, - 708.0, - 51.0, + 108.0, + 114.0, 22.0 ], - "text": "t b b" + "text": "test.terminate" } }, { "box": { "id": "obj-166", "maxclass": "newobj", - "numinlets": 2, + "numinlets": 1, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 20.0, - 738.0, - 86.0, + 1020.0, + 950.0, + 72.0, 22.0 ], - "text": "delay 1500" + "text": "tosymbol" } }, { @@ -3056,37 +3048,39 @@ "id": "obj-167", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 3, + "numoutlets": 5, "outlettype": [ + "", + "", "", "", "" ], "patching_rect": [ - 20.0, - 768.0, - 65.0, + 1020.0, + 980.0, + 177.0, 22.0 ], - "text": "t b b b" + "text": "regexp \\\" @substitute '" } }, { "box": { "id": "obj-168", "maxclass": "newobj", - "numinlets": 2, + "numinlets": 1, "numoutlets": 1, "outlettype": [ "" ], "patching_rect": [ - 20.0, - 798.0, - 107.0, + 1020.0, + 1010.0, + 86.0, 22.0 ], - "text": "delay 1198200" + "text": "fromsymbol" } }, { @@ -3094,59 +3088,57 @@ "id": "obj-169", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 3, + "numoutlets": 2, "outlettype": [ - "", "", "" ], "patching_rect": [ - 20.0, - 828.0, - 65.0, + 1020.0, + 1040.0, + 51.0, 22.0 ], - "text": "t b b b" + "text": "t l b" } }, { "box": { "id": "obj-170", "maxclass": "newobj", - "numinlets": 2, - "numoutlets": 1, + "numinlets": 3, + "numoutlets": 4, "outlettype": [ + "", + "", + "", "" ], "patching_rect": [ - 20.0, - 858.0, - 79.0, + 1020.0, + 1070.0, + 135.0, 22.0 ], - "text": "delay 150" + "text": "counter 1 1000000" } }, { "box": { "id": "obj-171", "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 5, + "numinlets": 2, + "numoutlets": 1, "outlettype": [ - "", - "", - "", - "", "" ], "patching_rect": [ - 20.0, - 888.0, - 93.0, + 1020.0, + 1100.0, + 51.0, 22.0 ], - "text": "t b b b b b" + "text": "<= 50" } }, { @@ -3159,12 +3151,12 @@ "" ], "patching_rect": [ - 20.0, - 918.0, - 79.0, + 1020.0, + 1130.0, + 72.0, 22.0 ], - "text": "delay 100" + "text": "gate 1 1" } }, { @@ -3172,6 +3164,40 @@ "id": "obj-173", "maxclass": "newobj", "numinlets": 1, + "numoutlets": 0, + "outlettype": [], + "patching_rect": [ + 1020.0, + 1160.0, + 170.0, + 22.0 + ], + "text": "test.log console-error" + } + }, + { + "box": { + "id": "obj-174", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 138.0, + 72.0, + 22.0 + ], + "text": "loadbang" + } + }, + { + "box": { + "id": "obj-175", + "maxclass": "newobj", + "numinlets": 1, "numoutlets": 2, "outlettype": [ "", @@ -3179,7 +3205,7 @@ ], "patching_rect": [ 20.0, - 948.0, + 168.0, 51.0, 22.0 ], @@ -3188,7 +3214,25 @@ }, { "box": { - "id": "obj-174", + "id": "obj-176", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 198.0, + 93.0, + 22.0 + ], + "text": "; dsp start" + } + }, + { + "box": { + "id": "obj-177", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -3197,75 +3241,76 @@ ], "patching_rect": [ 20.0, - 978.0, - 86.0, + 228.0, + 107.0, 22.0 ], - "text": "delay 1500" + "text": "delay 3780000" } }, { "box": { - "id": "obj-175", + "id": "obj-178", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 3, + "numoutlets": 4, "outlettype": [ + "", "", "", "" ], "patching_rect": [ 20.0, - 1008.0, - 65.0, + 258.0, + 79.0, 22.0 ], - "text": "t b b b" + "text": "dspstate~" } }, { "box": { - "id": "obj-176", + "id": "obj-179", "maxclass": "newobj", "numinlets": 2, - "numoutlets": 1, + "numoutlets": 2, "outlettype": [ + "", "" ], "patching_rect": [ 20.0, - 1038.0, - 107.0, + 288.0, + 51.0, 22.0 ], - "text": "delay 1198200" + "text": "sel 1" } }, { "box": { - "id": "obj-177", + "id": "obj-180", "maxclass": "newobj", - "numinlets": 1, - "numoutlets": 3, + "numinlets": 2, + "numoutlets": 2, "outlettype": [ - "", "", "" ], "patching_rect": [ 20.0, - 1068.0, - 65.0, + 318.0, + 79.0, 22.0 ], - "text": "t b b b" + "text": "onebang 1" } }, { "box": { - "id": "obj-178", - "maxclass": "newobj", + "id": "obj-181", + "maxclass": "message", "numinlets": 2, "numoutlets": 1, "outlettype": [ @@ -3273,38 +3318,34 @@ ], "patching_rect": [ 20.0, - 1098.0, - 79.0, + 348.0, + 40.0, 22.0 ], - "text": "delay 150" + "text": "1" } }, { "box": { - "id": "obj-179", + "id": "obj-182", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 5, + "numoutlets": 1, "outlettype": [ - "", - "", - "", - "", "" ], "patching_rect": [ - 20.0, - 1128.0, - 93.0, + 770.0, + 2780.0, + 191.0, 22.0 ], - "text": "t b b b b b" + "text": "test.assert audio-started" } }, { "box": { - "id": "obj-180", + "id": "obj-183", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -3313,39 +3354,36 @@ ], "patching_rect": [ 20.0, - 1158.0, - 86.0, + 378.0, + 79.0, 22.0 ], - "text": "delay 2500" + "text": "delay 150" } }, { "box": { - "id": "obj-181", + "id": "obj-184", "maxclass": "newobj", "numinlets": 1, - "numoutlets": 6, + "numoutlets": 3, "outlettype": [ - "", - "", - "", "", "", "" ], "patching_rect": [ 20.0, - 1188.0, - 107.0, + 408.0, + 65.0, 22.0 ], - "text": "t b b b b b b" + "text": "t b b b" } }, { "box": { - "id": "obj-182", + "id": "obj-185", "maxclass": "newobj", "numinlets": 2, "numoutlets": 1, @@ -3354,16 +3392,16 @@ ], "patching_rect": [ 20.0, - 1218.0, - 79.0, + 438.0, + 93.0, 22.0 ], - "text": "delay 500" + "text": "delay 30000" } }, { "box": { - "id": "obj-183", + "id": "obj-186", "maxclass": "newobj", "numinlets": 1, "numoutlets": 2, @@ -3373,33 +3411,936 @@ ], "patching_rect": [ 20.0, - 1248.0, + 468.0, 51.0, 22.0 ], "text": "t b b" } - } - ], - "lines": [ - { - "patchline": { - "source": [ - "obj-2", - 0 - ], - "destination": [ - "obj-3", - 0 - ] - } }, { - "patchline": { - "source": [ + "box": { + "id": "obj-187", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 498.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-188", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 6, + "outlettype": [ + "", + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 528.0, + 107.0, + 22.0 + ], + "text": "t b b b b b b" + } + }, + { + "box": { + "id": "obj-189", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 558.0, + 107.0, + 22.0 + ], + "text": "delay 1199800" + } + }, + { + "box": { + "id": "obj-190", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 588.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-191", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 618.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-192", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 648.0, + 93.0, + 22.0 + ], + "text": "t b b b b b" + } + }, + { + "box": { + "id": "obj-193", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 678.0, + 79.0, + 22.0 + ], + "text": "delay 100" + } + }, + { + "box": { + "id": "obj-194", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 708.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-195", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 738.0, + 86.0, + 22.0 + ], + "text": "delay 1500" + } + }, + { + "box": { + "id": "obj-196", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 768.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-197", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 798.0, + 107.0, + 22.0 + ], + "text": "delay 1198200" + } + }, + { + "box": { + "id": "obj-198", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 828.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-199", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 858.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-200", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 888.0, + 93.0, + 22.0 + ], + "text": "t b b b b b" + } + }, + { + "box": { + "id": "obj-201", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 918.0, + 79.0, + 22.0 + ], + "text": "delay 100" + } + }, + { + "box": { + "id": "obj-202", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 948.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-203", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 978.0, + 86.0, + 22.0 + ], + "text": "delay 1500" + } + }, + { + "box": { + "id": "obj-204", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 1008.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-205", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 1038.0, + 107.0, + 22.0 + ], + "text": "delay 1198200" + } + }, + { + "box": { + "id": "obj-206", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 1068.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-207", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 1098.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-208", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 6, + "outlettype": [ + "", + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 1128.0, + 107.0, + 22.0 + ], + "text": "t b b b b b b" + } + }, + { + "box": { + "id": "obj-209", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 1158.0, + 86.0, + 22.0 + ], + "text": "delay 2500" + } + }, + { + "box": { + "id": "obj-210", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 9, + "outlettype": [ + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 1188.0, + 149.0, + 22.0 + ], + "text": "t b b b b b b b b b" + } + }, + { + "box": { + "id": "obj-211", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 1218.0, + 79.0, + 22.0 + ], + "text": "delay 500" + } + }, + { + "box": { + "id": "obj-212", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 1248.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + } + ], + "lines": [ + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-4", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-5", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-6", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-7", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-8", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-9", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-10", + 0 + ] + } + }, + { + "patchline": { + "source": [ "obj-2", 0 ], + "destination": [ + "obj-11", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-12", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-15", + 0 + ], + "destination": [ + "obj-16", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-16", + 0 + ], + "destination": [ + "obj-17", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-17", + 1 + ], + "destination": [ + "obj-18", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-17", + 0 + ], + "destination": [ + "obj-14", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-14", + 0 + ], + "destination": [ + "obj-20", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-20", + 1 + ], + "destination": [ + "obj-18", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-18", + 0 + ], + "destination": [ + "obj-19", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-20", + 0 + ], + "destination": [ + "obj-19", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-19", + 0 + ], + "destination": [ + "obj-21", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-21", + 0 + ], + "destination": [ + "obj-22", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-22", + 0 + ], + "destination": [ + "obj-23", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-14", + 0 + ], + "destination": [ + "obj-24", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-24", + 0 + ], + "destination": [ + "obj-25", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-16", + 0 + ], + "destination": [ + "obj-26", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-26", + 0 + ], + "destination": [ + "obj-27", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-27", + 0 + ], + "destination": [ + "obj-28", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-25", + 0 + ], + "destination": [ + "obj-29", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-29", + 0 + ], + "destination": [ + "obj-30", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-28", + 0 + ], + "destination": [ + "obj-30", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-31", + 1 + ], + "destination": [ + "obj-29", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-31", + 0 + ], + "destination": [ + "obj-28", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-30", + 0 + ], + "destination": [ + "obj-32", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-32", + 0 + ], + "destination": [ + "obj-33", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-34", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-34", + 0 + ], "destination": [ "obj-4", 0 @@ -3409,7 +4350,7 @@ { "patchline": { "source": [ - "obj-2", + "obj-34", 0 ], "destination": [ @@ -3421,7 +4362,7 @@ { "patchline": { "source": [ - "obj-2", + "obj-34", 0 ], "destination": [ @@ -3433,7 +4374,7 @@ { "patchline": { "source": [ - "obj-2", + "obj-34", 0 ], "destination": [ @@ -3445,7 +4386,7 @@ { "patchline": { "source": [ - "obj-2", + "obj-34", 0 ], "destination": [ @@ -3457,7 +4398,7 @@ { "patchline": { "source": [ - "obj-2", + "obj-34", 0 ], "destination": [ @@ -3469,7 +4410,7 @@ { "patchline": { "source": [ - "obj-2", + "obj-34", 0 ], "destination": [ @@ -3481,7 +4422,7 @@ { "patchline": { "source": [ - "obj-2", + "obj-34", 0 ], "destination": [ @@ -3493,7 +4434,7 @@ { "patchline": { "source": [ - "obj-2", + "obj-34", 0 ], "destination": [ @@ -3505,11 +4446,35 @@ { "patchline": { "source": [ - "obj-14", + "obj-34", + 0 + ], + "destination": [ + "obj-14", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-35", + 0 + ], + "destination": [ + "obj-13", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-36", 0 ], "destination": [ - "obj-3", + "obj-13", 0 ] } @@ -3517,11 +4482,11 @@ { "patchline": { "source": [ - "obj-14", + "obj-37", 0 ], "destination": [ - "obj-4", + "obj-13", 0 ] } @@ -3529,11 +4494,11 @@ { "patchline": { "source": [ - "obj-14", + "obj-38", 0 ], "destination": [ - "obj-5", + "obj-39", 0 ] } @@ -3541,11 +4506,11 @@ { "patchline": { "source": [ - "obj-14", - 0 + "obj-39", + 3 ], "destination": [ - "obj-6", + "obj-35", 0 ] } @@ -3553,11 +4518,11 @@ { "patchline": { "source": [ - "obj-14", - 0 + "obj-39", + 2 ], "destination": [ - "obj-7", + "obj-36", 0 ] } @@ -3565,11 +4530,11 @@ { "patchline": { "source": [ - "obj-14", - 0 + "obj-39", + 1 ], "destination": [ - "obj-8", + "obj-37", 0 ] } @@ -3577,11 +4542,11 @@ { "patchline": { "source": [ - "obj-14", + "obj-39", 0 ], "destination": [ - "obj-9", + "obj-34", 0 ] } @@ -3589,11 +4554,11 @@ { "patchline": { "source": [ - "obj-14", + "obj-40", 0 ], "destination": [ - "obj-10", + "obj-38", 0 ] } @@ -3601,11 +4566,11 @@ { "patchline": { "source": [ - "obj-14", + "obj-41", 0 ], "destination": [ - "obj-11", + "obj-38", 0 ] } @@ -3613,11 +4578,11 @@ { "patchline": { "source": [ - "obj-14", + "obj-42", 0 ], "destination": [ - "obj-12", + "obj-4", 0 ] } @@ -3625,11 +4590,11 @@ { "patchline": { "source": [ - "obj-15", - 0 + "obj-43", + 1 ], "destination": [ - "obj-13", + "obj-4", 0 ] } @@ -3637,11 +4602,11 @@ { "patchline": { "source": [ - "obj-16", + "obj-43", 0 ], "destination": [ - "obj-13", + "obj-44", 0 ] } @@ -3649,11 +4614,11 @@ { "patchline": { "source": [ - "obj-17", + "obj-44", 0 ], "destination": [ - "obj-18", + "obj-45", 0 ] } @@ -3661,11 +4626,11 @@ { "patchline": { "source": [ - "obj-18", - 2 + "obj-46", + 1 ], "destination": [ - "obj-15", + "obj-4", 0 ] } @@ -3673,11 +4638,11 @@ { "patchline": { "source": [ - "obj-18", - 1 + "obj-46", + 0 ], "destination": [ - "obj-16", + "obj-47", 0 ] } @@ -3685,11 +4650,11 @@ { "patchline": { "source": [ - "obj-18", + "obj-47", 0 ], "destination": [ - "obj-14", + "obj-48", 0 ] } @@ -3697,11 +4662,11 @@ { "patchline": { "source": [ - "obj-19", - 0 + "obj-49", + 2 ], "destination": [ - "obj-17", + "obj-50", 0 ] } @@ -3709,11 +4674,11 @@ { "patchline": { "source": [ - "obj-20", - 0 + "obj-49", + 1 ], "destination": [ - "obj-17", + "obj-53", 0 ] } @@ -3721,11 +4686,11 @@ { "patchline": { "source": [ - "obj-21", + "obj-49", 0 ], "destination": [ - "obj-4", + "obj-51", 0 ] } @@ -3733,11 +4698,11 @@ { "patchline": { "source": [ - "obj-22", - 1 + "obj-50", + 0 ], "destination": [ - "obj-4", + "obj-52", 0 ] } @@ -3745,11 +4710,11 @@ { "patchline": { "source": [ - "obj-22", + "obj-51", 0 ], "destination": [ - "obj-23", + "obj-52", 0 ] } @@ -3757,23 +4722,23 @@ { "patchline": { "source": [ - "obj-23", + "obj-53", 0 ], "destination": [ - "obj-24", - 0 + "obj-52", + 1 ] } }, { "patchline": { "source": [ - "obj-25", - 1 + "obj-52", + 0 ], "destination": [ - "obj-4", + "obj-54", 0 ] } @@ -3781,11 +4746,11 @@ { "patchline": { "source": [ - "obj-25", + "obj-54", 0 ], "destination": [ - "obj-26", + "obj-55", 0 ] } @@ -3793,11 +4758,11 @@ { "patchline": { "source": [ - "obj-26", + "obj-56", 0 ], "destination": [ - "obj-27", + "obj-57", 0 ] } @@ -3805,11 +4770,11 @@ { "patchline": { "source": [ - "obj-28", - 2 + "obj-57", + 3 ], "destination": [ - "obj-29", + "obj-42", 0 ] } @@ -3817,11 +4782,11 @@ { "patchline": { "source": [ - "obj-28", - 1 + "obj-57", + 2 ], "destination": [ - "obj-32", + "obj-43", 0 ] } @@ -3829,11 +4794,11 @@ { "patchline": { "source": [ - "obj-28", - 0 + "obj-57", + 1 ], "destination": [ - "obj-30", + "obj-46", 0 ] } @@ -3841,11 +4806,11 @@ { "patchline": { "source": [ - "obj-29", + "obj-57", 0 ], "destination": [ - "obj-31", + "obj-49", 0 ] } @@ -3853,11 +4818,11 @@ { "patchline": { "source": [ - "obj-30", + "obj-58", 0 ], "destination": [ - "obj-31", + "obj-56", 0 ] } @@ -3865,23 +4830,23 @@ { "patchline": { "source": [ - "obj-32", + "obj-59", 0 ], "destination": [ - "obj-31", - 1 + "obj-56", + 0 ] } }, { "patchline": { "source": [ - "obj-31", + "obj-3", 0 ], "destination": [ - "obj-33", + "obj-60", 0 ] } @@ -3889,11 +4854,11 @@ { "patchline": { "source": [ - "obj-33", + "obj-60", 0 ], "destination": [ - "obj-34", + "obj-61", 0 ] } @@ -3901,11 +4866,11 @@ { "patchline": { "source": [ - "obj-35", - 0 + "obj-62", + 1 ], "destination": [ - "obj-36", + "obj-61", 0 ] } @@ -3913,11 +4878,11 @@ { "patchline": { "source": [ - "obj-36", - 3 + "obj-62", + 0 ], "destination": [ - "obj-21", + "obj-65", 0 ] } @@ -3925,11 +4890,11 @@ { "patchline": { "source": [ - "obj-36", - 2 + "obj-65", + 0 ], "destination": [ - "obj-22", + "obj-64", 0 ] } @@ -3937,11 +4902,11 @@ { "patchline": { "source": [ - "obj-36", - 1 + "obj-63", + 0 ], "destination": [ - "obj-25", + "obj-61", 0 ] } @@ -3949,23 +4914,23 @@ { "patchline": { "source": [ - "obj-36", + "obj-61", 0 ], "destination": [ - "obj-28", - 0 + "obj-64", + 1 ] } }, { "patchline": { "source": [ - "obj-37", + "obj-64", 0 ], "destination": [ - "obj-35", + "obj-66", 0 ] } @@ -3973,11 +4938,11 @@ { "patchline": { "source": [ - "obj-38", + "obj-66", 0 ], "destination": [ - "obj-35", + "obj-67", 0 ] } @@ -3985,11 +4950,11 @@ { "patchline": { "source": [ - "obj-3", + "obj-5", 0 ], "destination": [ - "obj-39", + "obj-68", 0 ] } @@ -3997,11 +4962,11 @@ { "patchline": { "source": [ - "obj-39", + "obj-6", 0 ], "destination": [ - "obj-40", + "obj-68", 0 ] } @@ -4009,11 +4974,11 @@ { "patchline": { "source": [ - "obj-41", - 1 + "obj-7", + 0 ], "destination": [ - "obj-40", + "obj-68", 0 ] } @@ -4021,11 +4986,11 @@ { "patchline": { "source": [ - "obj-41", + "obj-8", 0 ], "destination": [ - "obj-44", + "obj-68", 0 ] } @@ -4033,11 +4998,11 @@ { "patchline": { "source": [ - "obj-44", + "obj-9", 0 ], "destination": [ - "obj-43", + "obj-68", 0 ] } @@ -4045,11 +5010,11 @@ { "patchline": { "source": [ - "obj-42", + "obj-10", 0 ], "destination": [ - "obj-40", + "obj-68", 0 ] } @@ -4057,23 +5022,23 @@ { "patchline": { "source": [ - "obj-40", + "obj-11", 0 ], "destination": [ - "obj-43", - 1 + "obj-68", + 0 ] } }, { "patchline": { "source": [ - "obj-43", + "obj-12", 0 ], "destination": [ - "obj-45", + "obj-68", 0 ] } @@ -4081,11 +5046,11 @@ { "patchline": { "source": [ - "obj-45", + "obj-68", 0 ], "destination": [ - "obj-46", + "obj-69", 0 ] } @@ -4093,11 +5058,11 @@ { "patchline": { "source": [ - "obj-5", - 0 + "obj-70", + 1 ], "destination": [ - "obj-47", + "obj-69", 0 ] } @@ -4105,11 +5070,11 @@ { "patchline": { "source": [ - "obj-6", + "obj-70", 0 ], "destination": [ - "obj-47", + "obj-73", 0 ] } @@ -4117,11 +5082,11 @@ { "patchline": { "source": [ - "obj-7", + "obj-73", 0 ], "destination": [ - "obj-47", + "obj-72", 0 ] } @@ -4129,11 +5094,11 @@ { "patchline": { "source": [ - "obj-8", + "obj-71", 0 ], "destination": [ - "obj-47", + "obj-69", 0 ] } @@ -4141,23 +5106,23 @@ { "patchline": { "source": [ - "obj-9", + "obj-69", 0 ], "destination": [ - "obj-47", - 0 + "obj-72", + 1 ] } }, { "patchline": { "source": [ - "obj-10", + "obj-72", 0 ], "destination": [ - "obj-47", + "obj-74", 0 ] } @@ -4165,11 +5130,11 @@ { "patchline": { "source": [ - "obj-11", + "obj-74", 0 ], "destination": [ - "obj-47", + "obj-75", 0 ] } @@ -4177,11 +5142,11 @@ { "patchline": { "source": [ - "obj-12", + "obj-3", 0 ], "destination": [ - "obj-47", + "obj-76", 0 ] } @@ -4189,11 +5154,11 @@ { "patchline": { "source": [ - "obj-47", + "obj-76", 0 ], "destination": [ - "obj-48", + "obj-77", 0 ] } @@ -4201,11 +5166,11 @@ { "patchline": { "source": [ - "obj-49", + "obj-78", 1 ], "destination": [ - "obj-48", + "obj-77", 0 ] } @@ -4213,11 +5178,11 @@ { "patchline": { "source": [ - "obj-49", + "obj-78", 0 ], "destination": [ - "obj-52", + "obj-81", 0 ] } @@ -4225,11 +5190,11 @@ { "patchline": { "source": [ - "obj-52", + "obj-81", 0 ], "destination": [ - "obj-51", + "obj-80", 0 ] } @@ -4237,11 +5202,11 @@ { "patchline": { "source": [ - "obj-50", + "obj-79", 0 ], "destination": [ - "obj-48", + "obj-77", 0 ] } @@ -4249,11 +5214,11 @@ { "patchline": { "source": [ - "obj-48", + "obj-77", 0 ], "destination": [ - "obj-51", + "obj-80", 1 ] } @@ -4261,11 +5226,11 @@ { "patchline": { "source": [ - "obj-51", + "obj-80", 0 ], "destination": [ - "obj-53", + "obj-82", 0 ] } @@ -4273,11 +5238,11 @@ { "patchline": { "source": [ - "obj-53", + "obj-82", 0 ], "destination": [ - "obj-54", + "obj-83", 0 ] } @@ -4285,11 +5250,11 @@ { "patchline": { "source": [ - "obj-3", + "obj-5", 0 ], "destination": [ - "obj-55", + "obj-84", 0 ] } @@ -4297,11 +5262,11 @@ { "patchline": { "source": [ - "obj-55", + "obj-6", 0 ], "destination": [ - "obj-56", + "obj-84", 0 ] } @@ -4309,11 +5274,11 @@ { "patchline": { "source": [ - "obj-57", - 1 + "obj-7", + 0 ], "destination": [ - "obj-56", + "obj-84", 0 ] } @@ -4321,11 +5286,11 @@ { "patchline": { "source": [ - "obj-57", + "obj-8", 0 ], "destination": [ - "obj-60", + "obj-84", 0 ] } @@ -4333,11 +5298,11 @@ { "patchline": { "source": [ - "obj-60", + "obj-9", 0 ], "destination": [ - "obj-59", + "obj-84", 0 ] } @@ -4345,11 +5310,11 @@ { "patchline": { "source": [ - "obj-58", + "obj-10", 0 ], "destination": [ - "obj-56", + "obj-84", 0 ] } @@ -4357,23 +5322,23 @@ { "patchline": { "source": [ - "obj-56", + "obj-11", 0 ], "destination": [ - "obj-59", - 1 + "obj-84", + 0 ] } }, { "patchline": { "source": [ - "obj-59", + "obj-12", 0 ], "destination": [ - "obj-61", + "obj-84", 0 ] } @@ -4381,11 +5346,11 @@ { "patchline": { "source": [ - "obj-61", + "obj-84", 0 ], "destination": [ - "obj-62", + "obj-85", 0 ] } @@ -4393,11 +5358,11 @@ { "patchline": { "source": [ - "obj-5", - 0 + "obj-86", + 1 ], "destination": [ - "obj-63", + "obj-85", 0 ] } @@ -4405,11 +5370,11 @@ { "patchline": { "source": [ - "obj-6", + "obj-86", 0 ], "destination": [ - "obj-63", + "obj-89", 0 ] } @@ -4417,11 +5382,11 @@ { "patchline": { "source": [ - "obj-7", + "obj-89", 0 ], "destination": [ - "obj-63", + "obj-88", 0 ] } @@ -4429,11 +5394,11 @@ { "patchline": { "source": [ - "obj-8", + "obj-87", 0 ], "destination": [ - "obj-63", + "obj-85", 0 ] } @@ -4441,23 +5406,23 @@ { "patchline": { "source": [ - "obj-9", + "obj-85", 0 ], "destination": [ - "obj-63", - 0 + "obj-88", + 1 ] } }, { "patchline": { "source": [ - "obj-10", + "obj-88", 0 ], "destination": [ - "obj-63", + "obj-90", 0 ] } @@ -4465,11 +5430,11 @@ { "patchline": { "source": [ - "obj-11", + "obj-90", 0 ], "destination": [ - "obj-63", + "obj-91", 0 ] } @@ -4477,11 +5442,11 @@ { "patchline": { "source": [ - "obj-12", + "obj-3", 0 ], "destination": [ - "obj-63", + "obj-92", 0 ] } @@ -4489,11 +5454,11 @@ { "patchline": { "source": [ - "obj-63", + "obj-92", 0 ], "destination": [ - "obj-64", + "obj-93", 0 ] } @@ -4501,11 +5466,11 @@ { "patchline": { "source": [ - "obj-65", + "obj-94", 1 ], "destination": [ - "obj-64", + "obj-93", 0 ] } @@ -4513,11 +5478,11 @@ { "patchline": { "source": [ - "obj-65", + "obj-94", 0 ], "destination": [ - "obj-68", + "obj-97", 0 ] } @@ -4525,11 +5490,11 @@ { "patchline": { "source": [ - "obj-68", + "obj-97", 0 ], "destination": [ - "obj-67", + "obj-96", 0 ] } @@ -4537,11 +5502,11 @@ { "patchline": { "source": [ - "obj-66", + "obj-95", 0 ], "destination": [ - "obj-64", + "obj-93", 0 ] } @@ -4549,11 +5514,11 @@ { "patchline": { "source": [ - "obj-64", + "obj-93", 0 ], "destination": [ - "obj-67", + "obj-96", 1 ] } @@ -4561,11 +5526,11 @@ { "patchline": { "source": [ - "obj-67", + "obj-96", 0 ], "destination": [ - "obj-69", + "obj-98", 0 ] } @@ -4573,11 +5538,11 @@ { "patchline": { "source": [ - "obj-69", + "obj-98", 0 ], "destination": [ - "obj-70", + "obj-99", 0 ] } @@ -4585,11 +5550,11 @@ { "patchline": { "source": [ - "obj-3", + "obj-5", 0 ], "destination": [ - "obj-71", + "obj-100", 0 ] } @@ -4597,23 +5562,11 @@ { "patchline": { "source": [ - "obj-71", - 0 - ], - "destination": [ - "obj-72", + "obj-6", 0 - ] - } - }, - { - "patchline": { - "source": [ - "obj-73", - 1 ], "destination": [ - "obj-72", + "obj-100", 0 ] } @@ -4621,11 +5574,11 @@ { "patchline": { "source": [ - "obj-73", + "obj-7", 0 ], "destination": [ - "obj-76", + "obj-100", 0 ] } @@ -4633,11 +5586,11 @@ { "patchline": { "source": [ - "obj-76", + "obj-8", 0 ], "destination": [ - "obj-75", + "obj-100", 0 ] } @@ -4645,11 +5598,11 @@ { "patchline": { "source": [ - "obj-74", + "obj-9", 0 ], "destination": [ - "obj-72", + "obj-100", 0 ] } @@ -4657,23 +5610,23 @@ { "patchline": { "source": [ - "obj-72", + "obj-10", 0 ], "destination": [ - "obj-75", - 1 + "obj-100", + 0 ] } }, { "patchline": { "source": [ - "obj-75", + "obj-11", 0 ], "destination": [ - "obj-77", + "obj-100", 0 ] } @@ -4681,11 +5634,11 @@ { "patchline": { "source": [ - "obj-77", + "obj-12", 0 ], "destination": [ - "obj-78", + "obj-100", 0 ] } @@ -4693,11 +5646,11 @@ { "patchline": { "source": [ - "obj-5", + "obj-100", 0 ], "destination": [ - "obj-79", + "obj-101", 0 ] } @@ -4705,11 +5658,11 @@ { "patchline": { "source": [ - "obj-6", - 0 + "obj-102", + 1 ], "destination": [ - "obj-79", + "obj-101", 0 ] } @@ -4717,11 +5670,11 @@ { "patchline": { "source": [ - "obj-7", + "obj-102", 0 ], "destination": [ - "obj-79", + "obj-105", 0 ] } @@ -4729,11 +5682,11 @@ { "patchline": { "source": [ - "obj-8", + "obj-105", 0 ], "destination": [ - "obj-79", + "obj-104", 0 ] } @@ -4741,11 +5694,11 @@ { "patchline": { "source": [ - "obj-9", + "obj-103", 0 ], "destination": [ - "obj-79", + "obj-101", 0 ] } @@ -4753,23 +5706,23 @@ { "patchline": { "source": [ - "obj-10", + "obj-101", 0 ], "destination": [ - "obj-79", - 0 + "obj-104", + 1 ] } }, { "patchline": { "source": [ - "obj-11", + "obj-104", 0 ], "destination": [ - "obj-79", + "obj-106", 0 ] } @@ -4777,11 +5730,11 @@ { "patchline": { "source": [ - "obj-12", + "obj-106", 0 ], "destination": [ - "obj-79", + "obj-107", 0 ] } @@ -4789,11 +5742,11 @@ { "patchline": { "source": [ - "obj-79", + "obj-108", 0 ], "destination": [ - "obj-80", + "obj-3", 0 ] } @@ -4801,11 +5754,11 @@ { "patchline": { "source": [ - "obj-81", - 1 + "obj-109", + 0 ], "destination": [ - "obj-80", + "obj-3", 0 ] } @@ -4813,11 +5766,11 @@ { "patchline": { "source": [ - "obj-81", - 0 + "obj-110", + 2 ], "destination": [ - "obj-84", + "obj-111", 0 ] } @@ -4825,11 +5778,11 @@ { "patchline": { "source": [ - "obj-84", - 0 + "obj-110", + 1 ], "destination": [ - "obj-83", + "obj-114", 0 ] } @@ -4837,11 +5790,11 @@ { "patchline": { "source": [ - "obj-82", + "obj-110", 0 ], "destination": [ - "obj-80", + "obj-112", 0 ] } @@ -4849,23 +5802,23 @@ { "patchline": { "source": [ - "obj-80", + "obj-111", 0 ], "destination": [ - "obj-83", - 1 + "obj-113", + 0 ] } }, { "patchline": { "source": [ - "obj-83", + "obj-112", 0 ], "destination": [ - "obj-85", + "obj-113", 0 ] } @@ -4873,23 +5826,23 @@ { "patchline": { "source": [ - "obj-85", + "obj-114", 0 ], "destination": [ - "obj-86", - 0 + "obj-113", + 1 ] } }, { "patchline": { "source": [ - "obj-87", + "obj-113", 0 ], "destination": [ - "obj-3", + "obj-115", 0 ] } @@ -4897,11 +5850,11 @@ { "patchline": { "source": [ - "obj-88", + "obj-115", 0 ], "destination": [ - "obj-3", + "obj-116", 0 ] } @@ -4909,11 +5862,11 @@ { "patchline": { "source": [ - "obj-89", - 2 + "obj-117", + 0 ], "destination": [ - "obj-90", + "obj-15", 0 ] } @@ -4921,11 +5874,11 @@ { "patchline": { "source": [ - "obj-89", - 1 + "obj-3", + 0 ], "destination": [ - "obj-93", + "obj-118", 0 ] } @@ -4933,11 +5886,11 @@ { "patchline": { "source": [ - "obj-89", + "obj-118", 0 ], "destination": [ - "obj-91", + "obj-119", 0 ] } @@ -4945,11 +5898,11 @@ { "patchline": { "source": [ - "obj-90", + "obj-119", 0 ], "destination": [ - "obj-92", + "obj-120", 0 ] } @@ -4957,11 +5910,11 @@ { "patchline": { "source": [ - "obj-91", + "obj-5", 0 ], "destination": [ - "obj-92", + "obj-121", 0 ] } @@ -4969,23 +5922,23 @@ { "patchline": { "source": [ - "obj-93", + "obj-121", 0 ], "destination": [ - "obj-92", - 1 + "obj-122", + 0 ] } }, { "patchline": { "source": [ - "obj-92", + "obj-122", 0 ], "destination": [ - "obj-94", + "obj-123", 0 ] } @@ -4993,11 +5946,11 @@ { "patchline": { "source": [ - "obj-94", + "obj-124", 0 ], "destination": [ - "obj-95", + "obj-3", 0 ] } @@ -5009,7 +5962,7 @@ 0 ], "destination": [ - "obj-96", + "obj-127", 0 ] } @@ -5017,11 +5970,11 @@ { "patchline": { "source": [ - "obj-96", + "obj-127", 0 ], "destination": [ - "obj-97", + "obj-128", 0 ] } @@ -5029,11 +5982,11 @@ { "patchline": { "source": [ - "obj-97", + "obj-128", 0 ], "destination": [ - "obj-98", + "obj-129", 0 ] } @@ -5045,7 +5998,7 @@ 0 ], "destination": [ - "obj-99", + "obj-130", 0 ] } @@ -5053,11 +6006,11 @@ { "patchline": { "source": [ - "obj-99", + "obj-130", 0 ], "destination": [ - "obj-100", + "obj-131", 0 ] } @@ -5065,11 +6018,11 @@ { "patchline": { "source": [ - "obj-100", + "obj-131", 0 ], "destination": [ - "obj-101", + "obj-132", 0 ] } @@ -5077,7 +6030,7 @@ { "patchline": { "source": [ - "obj-102", + "obj-133", 0 ], "destination": [ @@ -5093,7 +6046,7 @@ 0 ], "destination": [ - "obj-105", + "obj-136", 0 ] } @@ -5101,11 +6054,11 @@ { "patchline": { "source": [ - "obj-105", + "obj-136", 0 ], "destination": [ - "obj-106", + "obj-137", 0 ] } @@ -5113,11 +6066,11 @@ { "patchline": { "source": [ - "obj-106", + "obj-137", 0 ], "destination": [ - "obj-107", + "obj-138", 0 ] } @@ -5129,7 +6082,7 @@ 0 ], "destination": [ - "obj-108", + "obj-139", 0 ] } @@ -5137,11 +6090,11 @@ { "patchline": { "source": [ - "obj-108", + "obj-139", 0 ], "destination": [ - "obj-109", + "obj-140", 0 ] } @@ -5149,11 +6102,11 @@ { "patchline": { "source": [ - "obj-109", + "obj-140", 0 ], "destination": [ - "obj-110", + "obj-141", 0 ] } @@ -5161,11 +6114,11 @@ { "patchline": { "source": [ - "obj-111", + "obj-142", 0 ], "destination": [ - "obj-3", + "obj-15", 0 ] } @@ -5173,11 +6126,11 @@ { "patchline": { "source": [ - "obj-3", + "obj-143", 0 ], "destination": [ - "obj-114", + "obj-4", 0 ] } @@ -5185,11 +6138,11 @@ { "patchline": { "source": [ - "obj-114", - 0 + "obj-144", + 1 ], "destination": [ - "obj-115", + "obj-4", 0 ] } @@ -5197,11 +6150,11 @@ { "patchline": { "source": [ - "obj-115", + "obj-144", 0 ], "destination": [ - "obj-116", + "obj-145", 0 ] } @@ -5209,11 +6162,11 @@ { "patchline": { "source": [ - "obj-5", + "obj-145", 0 ], "destination": [ - "obj-117", + "obj-146", 0 ] } @@ -5221,11 +6174,11 @@ { "patchline": { "source": [ - "obj-117", - 0 + "obj-147", + 1 ], "destination": [ - "obj-118", + "obj-4", 0 ] } @@ -5233,11 +6186,11 @@ { "patchline": { "source": [ - "obj-118", + "obj-147", 0 ], "destination": [ - "obj-119", + "obj-148", 0 ] } @@ -5245,11 +6198,11 @@ { "patchline": { "source": [ - "obj-120", + "obj-148", 0 ], "destination": [ - "obj-4", + "obj-149", 0 ] } @@ -5257,7 +6210,7 @@ { "patchline": { "source": [ - "obj-121", + "obj-150", 1 ], "destination": [ @@ -5269,11 +6222,11 @@ { "patchline": { "source": [ - "obj-121", + "obj-150", 0 ], "destination": [ - "obj-122", + "obj-151", 0 ] } @@ -5281,11 +6234,11 @@ { "patchline": { "source": [ - "obj-122", + "obj-151", 0 ], "destination": [ - "obj-123", + "obj-152", 0 ] } @@ -5293,23 +6246,23 @@ { "patchline": { "source": [ - "obj-124", - 1 + "obj-23", + 0 ], "destination": [ - "obj-4", - 0 + "obj-153", + 1 ] } }, { "patchline": { "source": [ - "obj-124", + "obj-153", 0 ], "destination": [ - "obj-125", + "obj-154", 0 ] } @@ -5317,11 +6270,11 @@ { "patchline": { "source": [ - "obj-125", + "obj-154", 0 ], "destination": [ - "obj-126", + "obj-155", 0 ] } @@ -5329,23 +6282,23 @@ { "patchline": { "source": [ - "obj-127", - 1 + "obj-25", + 0 ], "destination": [ - "obj-4", - 0 + "obj-156", + 1 ] } }, { "patchline": { "source": [ - "obj-127", + "obj-156", 0 ], "destination": [ - "obj-128", + "obj-157", 0 ] } @@ -5353,11 +6306,11 @@ { "patchline": { "source": [ - "obj-128", + "obj-157", 0 ], "destination": [ - "obj-129", + "obj-158", 0 ] } @@ -5365,11 +6318,11 @@ { "patchline": { "source": [ - "obj-130", + "obj-159", 0 ], "destination": [ - "obj-131", + "obj-160", 0 ] } @@ -5377,11 +6330,11 @@ { "patchline": { "source": [ - "obj-131", + "obj-160", 0 ], "destination": [ - "obj-132", + "obj-161", 0 ] } @@ -5389,11 +6342,11 @@ { "patchline": { "source": [ - "obj-132", + "obj-161", 0 ], "destination": [ - "obj-133", + "obj-162", 1 ] } @@ -5401,11 +6354,11 @@ { "patchline": { "source": [ - "obj-133", + "obj-162", 0 ], "destination": [ - "obj-134", + "obj-163", 0 ] } @@ -5413,11 +6366,11 @@ { "patchline": { "source": [ - "obj-134", + "obj-163", 0 ], "destination": [ - "obj-135", + "obj-164", 0 ] } @@ -5425,11 +6378,11 @@ { "patchline": { "source": [ - "obj-130", + "obj-159", 0 ], "destination": [ - "obj-137", + "obj-166", 0 ] } @@ -5437,11 +6390,11 @@ { "patchline": { "source": [ - "obj-137", + "obj-166", 0 ], "destination": [ - "obj-138", + "obj-167", 0 ] } @@ -5449,11 +6402,11 @@ { "patchline": { "source": [ - "obj-138", + "obj-167", 0 ], "destination": [ - "obj-139", + "obj-168", 0 ] } @@ -5461,11 +6414,11 @@ { "patchline": { "source": [ - "obj-138", + "obj-167", 3 ], "destination": [ - "obj-139", + "obj-168", 0 ] } @@ -5473,11 +6426,11 @@ { "patchline": { "source": [ - "obj-139", + "obj-168", 0 ], "destination": [ - "obj-140", + "obj-169", 0 ] } @@ -5485,11 +6438,11 @@ { "patchline": { "source": [ - "obj-140", + "obj-169", 1 ], "destination": [ - "obj-141", + "obj-170", 0 ] } @@ -5497,11 +6450,11 @@ { "patchline": { "source": [ - "obj-141", + "obj-170", 0 ], "destination": [ - "obj-142", + "obj-171", 0 ] } @@ -5509,11 +6462,11 @@ { "patchline": { "source": [ - "obj-142", + "obj-171", 0 ], "destination": [ - "obj-143", + "obj-172", 0 ] } @@ -5521,11 +6474,11 @@ { "patchline": { "source": [ - "obj-140", + "obj-169", 0 ], "destination": [ - "obj-143", + "obj-172", 1 ] } @@ -5533,11 +6486,11 @@ { "patchline": { "source": [ - "obj-143", + "obj-172", 0 ], "destination": [ - "obj-144", + "obj-173", 0 ] } @@ -5545,11 +6498,11 @@ { "patchline": { "source": [ - "obj-145", + "obj-174", 0 ], "destination": [ - "obj-146", + "obj-175", 0 ] } @@ -5557,11 +6510,11 @@ { "patchline": { "source": [ - "obj-146", + "obj-175", 1 ], "destination": [ - "obj-148", + "obj-177", 0 ] } @@ -5569,11 +6522,11 @@ { "patchline": { "source": [ - "obj-146", + "obj-175", 0 ], "destination": [ - "obj-147", + "obj-176", 0 ] } @@ -5581,11 +6534,11 @@ { "patchline": { "source": [ - "obj-148", + "obj-177", 0 ], "destination": [ - "obj-136", + "obj-165", 0 ] } @@ -5593,11 +6546,11 @@ { "patchline": { "source": [ - "obj-149", + "obj-178", 0 ], "destination": [ - "obj-150", + "obj-179", 0 ] } @@ -5605,11 +6558,11 @@ { "patchline": { "source": [ - "obj-150", + "obj-179", 0 ], "destination": [ - "obj-151", + "obj-180", 0 ] } @@ -5617,11 +6570,11 @@ { "patchline": { "source": [ - "obj-151", + "obj-180", 0 ], "destination": [ - "obj-152", + "obj-181", 0 ] } @@ -5629,11 +6582,11 @@ { "patchline": { "source": [ - "obj-152", + "obj-181", 0 ], "destination": [ - "obj-153", + "obj-182", 0 ] } @@ -5641,11 +6594,11 @@ { "patchline": { "source": [ - "obj-151", + "obj-180", 0 ], "destination": [ - "obj-154", + "obj-183", 0 ] } @@ -5653,11 +6606,11 @@ { "patchline": { "source": [ - "obj-154", + "obj-183", 0 ], "destination": [ - "obj-155", + "obj-184", 0 ] } @@ -5665,11 +6618,11 @@ { "patchline": { "source": [ - "obj-155", + "obj-184", 2 ], "destination": [ - "obj-87", + "obj-108", 0 ] } @@ -5677,11 +6630,11 @@ { "patchline": { "source": [ - "obj-155", + "obj-184", 1 ], "destination": [ - "obj-88", + "obj-109", 0 ] } @@ -5689,11 +6642,11 @@ { "patchline": { "source": [ - "obj-155", + "obj-184", 0 ], "destination": [ - "obj-156", + "obj-185", 0 ] } @@ -5701,11 +6654,11 @@ { "patchline": { "source": [ - "obj-156", + "obj-185", 0 ], "destination": [ - "obj-157", + "obj-186", 0 ] } @@ -5713,11 +6666,11 @@ { "patchline": { "source": [ - "obj-157", + "obj-186", 1 ], "destination": [ - "obj-89", + "obj-110", 0 ] } @@ -5725,11 +6678,11 @@ { "patchline": { "source": [ - "obj-157", + "obj-186", 0 ], "destination": [ - "obj-158", + "obj-187", 0 ] } @@ -5737,11 +6690,11 @@ { "patchline": { "source": [ - "obj-158", + "obj-187", 0 ], "destination": [ - "obj-159", + "obj-188", 0 ] } @@ -5749,11 +6702,23 @@ { "patchline": { "source": [ - "obj-159", + "obj-188", + 5 + ], + "destination": [ + "obj-62", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-188", 4 ], "destination": [ - "obj-41", + "obj-70", 0 ] } @@ -5761,11 +6726,11 @@ { "patchline": { "source": [ - "obj-159", + "obj-188", 3 ], "destination": [ - "obj-49", + "obj-40", 0 ] } @@ -5773,11 +6738,11 @@ { "patchline": { "source": [ - "obj-159", + "obj-188", 2 ], "destination": [ - "obj-19", + "obj-58", 0 ] } @@ -5785,11 +6750,11 @@ { "patchline": { "source": [ - "obj-159", + "obj-188", 1 ], "destination": [ - "obj-37", + "obj-117", 0 ] } @@ -5797,11 +6762,11 @@ { "patchline": { "source": [ - "obj-159", + "obj-188", 0 ], "destination": [ - "obj-160", + "obj-189", 0 ] } @@ -5809,11 +6774,11 @@ { "patchline": { "source": [ - "obj-160", + "obj-189", 0 ], "destination": [ - "obj-161", + "obj-190", 0 ] } @@ -5821,11 +6786,11 @@ { "patchline": { "source": [ - "obj-161", + "obj-190", 2 ], "destination": [ - "obj-96", + "obj-118", 0 ] } @@ -5833,11 +6798,11 @@ { "patchline": { "source": [ - "obj-161", + "obj-190", 1 ], "destination": [ - "obj-99", + "obj-121", 0 ] } @@ -5845,11 +6810,11 @@ { "patchline": { "source": [ - "obj-161", + "obj-190", 0 ], "destination": [ - "obj-162", + "obj-191", 0 ] } @@ -5857,11 +6822,11 @@ { "patchline": { "source": [ - "obj-162", + "obj-191", 0 ], "destination": [ - "obj-163", + "obj-192", 0 ] } @@ -5869,11 +6834,11 @@ { "patchline": { "source": [ - "obj-163", + "obj-192", 4 ], "destination": [ - "obj-42", + "obj-63", 0 ] } @@ -5881,11 +6846,11 @@ { "patchline": { "source": [ - "obj-163", + "obj-192", 3 ], "destination": [ - "obj-50", + "obj-71", 0 ] } @@ -5893,11 +6858,11 @@ { "patchline": { "source": [ - "obj-163", + "obj-192", 2 ], "destination": [ - "obj-102", + "obj-124", 0 ] } @@ -5905,11 +6870,11 @@ { "patchline": { "source": [ - "obj-163", + "obj-192", 1 ], "destination": [ - "obj-103", + "obj-125", 0 ] } @@ -5917,11 +6882,11 @@ { "patchline": { "source": [ - "obj-163", + "obj-192", 0 ], "destination": [ - "obj-164", + "obj-193", 0 ] } @@ -5929,11 +6894,11 @@ { "patchline": { "source": [ - "obj-164", + "obj-193", 0 ], "destination": [ - "obj-165", + "obj-194", 0 ] } @@ -5941,11 +6906,11 @@ { "patchline": { "source": [ - "obj-165", + "obj-194", 1 ], "destination": [ - "obj-104", + "obj-126", 0 ] } @@ -5953,11 +6918,11 @@ { "patchline": { "source": [ - "obj-165", + "obj-194", 0 ], "destination": [ - "obj-166", + "obj-195", 0 ] } @@ -5965,11 +6930,11 @@ { "patchline": { "source": [ - "obj-166", + "obj-195", 0 ], "destination": [ - "obj-167", + "obj-196", 0 ] } @@ -5977,11 +6942,11 @@ { "patchline": { "source": [ - "obj-167", + "obj-196", 2 ], "destination": [ - "obj-57", + "obj-78", 0 ] } @@ -5989,11 +6954,11 @@ { "patchline": { "source": [ - "obj-167", + "obj-196", 1 ], "destination": [ - "obj-65", + "obj-86", 0 ] } @@ -6001,11 +6966,11 @@ { "patchline": { "source": [ - "obj-167", + "obj-196", 0 ], "destination": [ - "obj-168", + "obj-197", 0 ] } @@ -6013,11 +6978,11 @@ { "patchline": { "source": [ - "obj-168", + "obj-197", 0 ], "destination": [ - "obj-169", + "obj-198", 0 ] } @@ -6025,11 +6990,11 @@ { "patchline": { "source": [ - "obj-169", + "obj-198", 2 ], "destination": [ - "obj-105", + "obj-127", 0 ] } @@ -6037,11 +7002,11 @@ { "patchline": { "source": [ - "obj-169", + "obj-198", 1 ], "destination": [ - "obj-108", + "obj-130", 0 ] } @@ -6049,11 +7014,11 @@ { "patchline": { "source": [ - "obj-169", + "obj-198", 0 ], "destination": [ - "obj-170", + "obj-199", 0 ] } @@ -6061,11 +7026,11 @@ { "patchline": { "source": [ - "obj-170", + "obj-199", 0 ], "destination": [ - "obj-171", + "obj-200", 0 ] } @@ -6073,11 +7038,11 @@ { "patchline": { "source": [ - "obj-171", + "obj-200", 4 ], "destination": [ - "obj-58", + "obj-79", 0 ] } @@ -6085,11 +7050,11 @@ { "patchline": { "source": [ - "obj-171", + "obj-200", 3 ], "destination": [ - "obj-66", + "obj-87", 0 ] } @@ -6097,11 +7062,11 @@ { "patchline": { "source": [ - "obj-171", + "obj-200", 2 ], "destination": [ - "obj-111", + "obj-133", 0 ] } @@ -6109,11 +7074,11 @@ { "patchline": { "source": [ - "obj-171", + "obj-200", 1 ], "destination": [ - "obj-112", + "obj-134", 0 ] } @@ -6121,11 +7086,11 @@ { "patchline": { "source": [ - "obj-171", + "obj-200", 0 ], "destination": [ - "obj-172", + "obj-201", 0 ] } @@ -6133,11 +7098,11 @@ { "patchline": { "source": [ - "obj-172", + "obj-201", 0 ], "destination": [ - "obj-173", + "obj-202", 0 ] } @@ -6145,11 +7110,11 @@ { "patchline": { "source": [ - "obj-173", + "obj-202", 1 ], "destination": [ - "obj-113", + "obj-135", 0 ] } @@ -6157,11 +7122,11 @@ { "patchline": { "source": [ - "obj-173", + "obj-202", 0 ], "destination": [ - "obj-174", + "obj-203", 0 ] } @@ -6169,11 +7134,11 @@ { "patchline": { "source": [ - "obj-174", + "obj-203", 0 ], "destination": [ - "obj-175", + "obj-204", 0 ] } @@ -6181,11 +7146,11 @@ { "patchline": { "source": [ - "obj-175", + "obj-204", 2 ], "destination": [ - "obj-73", + "obj-94", 0 ] } @@ -6193,11 +7158,11 @@ { "patchline": { "source": [ - "obj-175", + "obj-204", 1 ], "destination": [ - "obj-81", + "obj-102", 0 ] } @@ -6205,11 +7170,11 @@ { "patchline": { "source": [ - "obj-175", + "obj-204", 0 ], "destination": [ - "obj-176", + "obj-205", 0 ] } @@ -6217,11 +7182,11 @@ { "patchline": { "source": [ - "obj-176", + "obj-205", 0 ], "destination": [ - "obj-177", + "obj-206", 0 ] } @@ -6229,11 +7194,11 @@ { "patchline": { "source": [ - "obj-177", + "obj-206", 2 ], "destination": [ - "obj-114", + "obj-136", 0 ] } @@ -6241,11 +7206,11 @@ { "patchline": { "source": [ - "obj-177", + "obj-206", 1 ], "destination": [ - "obj-117", + "obj-139", 0 ] } @@ -6253,11 +7218,11 @@ { "patchline": { "source": [ - "obj-177", + "obj-206", 0 ], "destination": [ - "obj-178", + "obj-207", 0 ] } @@ -6265,11 +7230,11 @@ { "patchline": { "source": [ - "obj-178", + "obj-207", 0 ], "destination": [ - "obj-179", + "obj-208", 0 ] } @@ -6277,11 +7242,23 @@ { "patchline": { "source": [ - "obj-179", + "obj-208", + 5 + ], + "destination": [ + "obj-95", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-208", 4 ], "destination": [ - "obj-74", + "obj-103", 0 ] } @@ -6289,11 +7266,11 @@ { "patchline": { "source": [ - "obj-179", + "obj-208", 3 ], "destination": [ - "obj-82", + "obj-41", 0 ] } @@ -6301,11 +7278,11 @@ { "patchline": { "source": [ - "obj-179", + "obj-208", 2 ], "destination": [ - "obj-20", + "obj-59", 0 ] } @@ -6313,11 +7290,11 @@ { "patchline": { "source": [ - "obj-179", + "obj-208", 1 ], "destination": [ - "obj-38", + "obj-142", 0 ] } @@ -6325,11 +7302,11 @@ { "patchline": { "source": [ - "obj-179", + "obj-208", 0 ], "destination": [ - "obj-180", + "obj-209", 0 ] } @@ -6337,11 +7314,11 @@ { "patchline": { "source": [ - "obj-180", + "obj-209", 0 ], "destination": [ - "obj-181", + "obj-210", 0 ] } @@ -6349,11 +7326,47 @@ { "patchline": { "source": [ - "obj-181", + "obj-210", + 8 + ], + "destination": [ + "obj-143", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-210", + 7 + ], + "destination": [ + "obj-144", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-210", + 6 + ], + "destination": [ + "obj-147", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-210", 5 ], "destination": [ - "obj-120", + "obj-150", 0 ] } @@ -6361,11 +7374,11 @@ { "patchline": { "source": [ - "obj-181", + "obj-210", 4 ], "destination": [ - "obj-121", + "obj-153", 0 ] } @@ -6373,11 +7386,11 @@ { "patchline": { "source": [ - "obj-181", + "obj-210", 3 ], "destination": [ - "obj-124", + "obj-156", 0 ] } @@ -6385,11 +7398,11 @@ { "patchline": { "source": [ - "obj-181", + "obj-210", 2 ], "destination": [ - "obj-127", + "obj-31", 0 ] } @@ -6397,11 +7410,11 @@ { "patchline": { "source": [ - "obj-181", + "obj-210", 1 ], "destination": [ - "obj-133", + "obj-162", 0 ] } @@ -6409,11 +7422,11 @@ { "patchline": { "source": [ - "obj-181", + "obj-210", 0 ], "destination": [ - "obj-182", + "obj-211", 0 ] } @@ -6421,11 +7434,11 @@ { "patchline": { "source": [ - "obj-182", + "obj-211", 0 ], "destination": [ - "obj-183", + "obj-212", 0 ] } @@ -6433,11 +7446,11 @@ { "patchline": { "source": [ - "obj-183", + "obj-212", 1 ], "destination": [ - "obj-136", + "obj-165", 0 ] } diff --git a/runtime-tests/patchers/tap.python.faults.maxtest.maxpat b/runtime-tests/patchers/tap.python.faults.maxtest.maxpat new file mode 100644 index 0000000..c16a3e7 --- /dev/null +++ b/runtime-tests/patchers/tap.python.faults.maxtest.maxpat @@ -0,0 +1,1602 @@ +{ + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 0, + "revision": 8, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "box", + "rect": [ + 60.0, + 80.0, + 1290, + 630.0 + ], + "default_fontsize": 12.0, + "default_fontname": "Arial", + "gridsize": [ + 15.0, + 15.0 + ], + "description": "tap.python.faults", + "boxes": [ + { + "box": { + "id": "obj-1", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ + 20.0, + 20.0, + 480, + 80.0 + ], + "text": "tap.python.faults\n\nWhat tap.python reports and survives (plan 9.5): sys.exit() in a method is reported, not obeyed; an exception prints its traceback; neither outputs anything, and the object still answers.", + "linecount": 4 + } + }, + { + "box": { + "id": "obj-2", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 520.0, + 20.0, + 247.0, + 22.0 + ], + "text": "tap.python maxtest_control_faults" + } + }, + { + "box": { + "id": "obj-3", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 20.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-4", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 770.0, + 50.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-5", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 20.0, + 65.0, + 22.0 + ], + "text": "error 1" + } + }, + { + "box": { + "id": "obj-6", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 50.0, + 135.0, + 22.0 + ], + "text": "regexp SystemExit" + } + }, + { + "box": { + "id": "obj-7", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 80.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-8", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 110.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-9", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 140.0, + 135.0, + 22.0 + ], + "text": "regexp ValueError" + } + }, + { + "box": { + "id": "obj-10", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 170.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-11", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 200.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-12", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 20.0, + 51.0, + 22.0 + ], + "text": "leave" + } + }, + { + "box": { + "id": "obj-13", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 230.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-14", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 260.0, + 44.0, + 22.0 + ], + "text": ">= 1" + } + }, + { + "box": { + "id": "obj-15", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 80.0, + 219.0, + 22.0 + ], + "text": "test.assert sys-exit-reported" + } + }, + { + "box": { + "id": "obj-16", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 50.0, + 44.0, + 22.0 + ], + "text": "fail" + } + }, + { + "box": { + "id": "obj-17", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 290.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-18", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 320.0, + 44.0, + 22.0 + ], + "text": ">= 1" + } + }, + { + "box": { + "id": "obj-19", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 110.0, + 226.0, + 22.0 + ], + "text": "test.assert exception-reported" + } + }, + { + "box": { + "id": "obj-20", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 140.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-21", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 170.0, + 44.0, + 22.0 + ], + "text": "== 0" + } + }, + { + "box": { + "id": "obj-22", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 200.0, + 261.0, + 22.0 + ], + "text": "test.assert neither-output-anything" + } + }, + { + "box": { + "id": "obj-23", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 80.0, + 40.0, + 22.0 + ], + "text": "ok" + } + }, + { + "box": { + "id": "obj-24", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 230.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-25", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 260.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-26", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 290.0, + 65.0, + 22.0 + ], + "text": "sel \"1\"" + } + }, + { + "box": { + "id": "obj-27", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 320.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-28", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 350.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-29", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 380.0, + 191.0, + 22.0 + ], + "text": "test.assert still-answers" + } + }, + { + "box": { + "id": "obj-30", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], + "patching_rect": [ + 20.0, + 108.0, + 114.0, + 22.0 + ], + "text": "test.terminate" + } + }, + { + "box": { + "id": "obj-31", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 350.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-32", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 380.0, + 177.0, + 22.0 + ], + "text": "regexp \\\" @substitute '" + } + }, + { + "box": { + "id": "obj-33", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 410.0, + 86.0, + 22.0 + ], + "text": "fromsymbol" + } + }, + { + "box": { + "id": "obj-34", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 1020.0, + 440.0, + 51.0, + 22.0 + ], + "text": "t l b" + } + }, + { + "box": { + "id": "obj-35", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 470.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-36", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 500.0, + 51.0, + 22.0 + ], + "text": "<= 50" + } + }, + { + "box": { + "id": "obj-37", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 530.0, + 72.0, + 22.0 + ], + "text": "gate 1 1" + } + }, + { + "box": { + "id": "obj-38", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], + "patching_rect": [ + 1020.0, + 560.0, + 170.0, + 22.0 + ], + "text": "test.log console-error" + } + }, + { + "box": { + "id": "obj-39", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 138.0, + 72.0, + 22.0 + ], + "text": "loadbang" + } + }, + { + "box": { + "id": "obj-40", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 168.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-41", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 198.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-42", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 228.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-43", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 258.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-44", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 288.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-45", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 318.0, + 79.0, + 22.0 + ], + "text": "t b b b b" + } + }, + { + "box": { + "id": "obj-46", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 348.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-47", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 378.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-48", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 408.0, + 79.0, + 22.0 + ], + "text": "delay 500" + } + }, + { + "box": { + "id": "obj-49", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 438.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + } + ], + "lines": [ + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-3", + 0 + ], + "destination": [ + "obj-4", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-5", + 0 + ], + "destination": [ + "obj-6", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-6", + 2 + ], + "destination": [ + "obj-7", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-7", + 0 + ], + "destination": [ + "obj-8", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-5", + 0 + ], + "destination": [ + "obj-9", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-9", + 2 + ], + "destination": [ + "obj-10", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-10", + 0 + ], + "destination": [ + "obj-11", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-12", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-8", + 0 + ], + "destination": [ + "obj-13", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-13", + 0 + ], + "destination": [ + "obj-14", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-14", + 0 + ], + "destination": [ + "obj-15", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-16", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-11", + 0 + ], + "destination": [ + "obj-17", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-17", + 0 + ], + "destination": [ + "obj-18", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-18", + 0 + ], + "destination": [ + "obj-19", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-4", + 0 + ], + "destination": [ + "obj-20", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-20", + 0 + ], + "destination": [ + "obj-21", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-21", + 0 + ], + "destination": [ + "obj-22", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-23", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-24", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-24", + 0 + ], + "destination": [ + "obj-25", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-25", + 0 + ], + "destination": [ + "obj-26", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-26", + 0 + ], + "destination": [ + "obj-27", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-26", + 1 + ], + "destination": [ + "obj-28", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-27", + 0 + ], + "destination": [ + "obj-29", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-28", + 0 + ], + "destination": [ + "obj-29", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-5", + 0 + ], + "destination": [ + "obj-31", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-31", + 0 + ], + "destination": [ + "obj-32", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-32", + 0 + ], + "destination": [ + "obj-33", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-32", + 3 + ], + "destination": [ + "obj-33", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-33", + 0 + ], + "destination": [ + "obj-34", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-34", + 1 + ], + "destination": [ + "obj-35", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-35", + 0 + ], + "destination": [ + "obj-36", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-36", + 0 + ], + "destination": [ + "obj-37", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-34", + 0 + ], + "destination": [ + "obj-37", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-37", + 0 + ], + "destination": [ + "obj-38", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-39", + 0 + ], + "destination": [ + "obj-40", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-40", + 0 + ], + "destination": [ + "obj-41", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-41", + 1 + ], + "destination": [ + "obj-12", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-41", + 0 + ], + "destination": [ + "obj-42", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-42", + 0 + ], + "destination": [ + "obj-43", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-43", + 2 + ], + "destination": [ + "obj-13", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-43", + 1 + ], + "destination": [ + "obj-16", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-43", + 0 + ], + "destination": [ + "obj-44", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-44", + 0 + ], + "destination": [ + "obj-45", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-45", + 3 + ], + "destination": [ + "obj-17", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-45", + 2 + ], + "destination": [ + "obj-20", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-45", + 1 + ], + "destination": [ + "obj-23", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-45", + 0 + ], + "destination": [ + "obj-46", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-46", + 0 + ], + "destination": [ + "obj-47", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-47", + 1 + ], + "destination": [ + "obj-25", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-47", + 0 + ], + "destination": [ + "obj-48", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-48", + 0 + ], + "destination": [ + "obj-49", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-49", + 1 + ], + "destination": [ + "obj-30", + 0 + ] + } + } + ] + } +} diff --git a/runtime-tests/patchers/tap.python.load.maxtest.maxpat b/runtime-tests/patchers/tap.python.load.maxtest.maxpat new file mode 100644 index 0000000..b34bec8 --- /dev/null +++ b/runtime-tests/patchers/tap.python.load.maxtest.maxpat @@ -0,0 +1,2621 @@ +{ + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 0, + "revision": 8, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "box", + "rect": [ + 60.0, + 80.0, + 1290, + 900.0 + ], + "default_fontsize": 12.0, + "default_fontname": "Arial", + "gridsize": [ + 15.0, + 15.0 + ], + "description": "tap.python.load", + "boxes": [ + { + "box": { + "id": "obj-1", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ + 20.0, + 20.0, + 480, + 80.0 + ], + "text": "tap.python.load\n\ntap.python (plan 9.5), the first patcher a fresh Max opens (run.py sees to it): Max finds the object through the package's init/ mapping to tap.python~'s binary. With no argument it loads python/default.py; each example outputs what its method returns \u2014 euclid's list from a bang (its steps set by an @attribute argument), scale's array as a list, note_name's two values right to left, the name as a symbol.", + "linecount": 4 + } + }, + { + "box": { + "id": "obj-2", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 520.0, + 20.0, + 86.0, + 22.0 + ], + "text": "tap.python" + } + }, + { + "box": { + "id": "obj-3", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 520.0, + 50.0, + 135.0, + 22.0 + ], + "text": "tap.python euclid" + } + }, + { + "box": { + "id": "obj-4", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 520.0, + 80.0, + 198.0, + 22.0 + ], + "text": "tap.python euclid @steps 5" + } + }, + { + "box": { + "id": "obj-5", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 520.0, + 110.0, + 198.0, + 22.0 + ], + "text": "tap.python scale @factor 2" + } + }, + { + "box": { + "id": "obj-6", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 520.0, + 140.0, + 156.0, + 22.0 + ], + "text": "tap.python note_name" + } + }, + { + "box": { + "id": "obj-7", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 20.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-8", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 50.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-9", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 80.0, + 100.0, + 22.0 + ], + "text": "sel \"1.0000\"" + } + }, + { + "box": { + "id": "obj-10", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 110.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-11", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 140.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-12", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 170.0, + 303.0, + 22.0 + ], + "text": "test.assert default-bang-outputs-the-gain" + } + }, + { + "box": { + "id": "obj-13", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 200.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-14", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 230.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-15", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 260.0, + 163.0, + 22.0 + ], + "text": "sel \"1 0 0 1 0 0 1 0\"" + } + }, + { + "box": { + "id": "obj-16", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 290.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-17", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 320.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-18", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 350.0, + 282.0, + 22.0 + ], + "text": "test.assert euclid-bang-outputs-a-list" + } + }, + { + "box": { + "id": "obj-19", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 380.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-20", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 410.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-21", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 440.0, + 121.0, + 22.0 + ], + "text": "sel \"1 0 1 0 1\"" + } + }, + { + "box": { + "id": "obj-22", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 470.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-23", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 500.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-24", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 530.0, + 282.0, + 22.0 + ], + "text": "test.assert attribute-argument-applies" + } + }, + { + "box": { + "id": "obj-25", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 560.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-26", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 590.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-27", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 620.0, + 198.0, + 22.0 + ], + "text": "sel \"2.0000 4.0000 6.0000\"" + } + }, + { + "box": { + "id": "obj-28", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 650.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-29", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 680.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-30", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 710.0, + 268.0, + 22.0 + ], + "text": "test.assert scale-list-through-numpy" + } + }, + { + "box": { + "id": "obj-31", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 740.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-32", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 770.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-33", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 800.0, + 114.0, + 22.0 + ], + "text": "sel \"symbol C\"" + } + }, + { + "box": { + "id": "obj-34", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 830.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-35", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 860.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-36", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 890.0, + 247.0, + 22.0 + ], + "text": "test.assert note-name-is-a-symbol" + } + }, + { + "box": { + "id": "obj-37", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 920.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-38", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 950.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-39", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 980.0, + 65.0, + 22.0 + ], + "text": "sel \"4\"" + } + }, + { + "box": { + "id": "obj-40", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1010.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-41", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1040.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-42", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1070.0, + 303.0, + 22.0 + ], + "text": "test.assert octave-from-the-second-outlet" + } + }, + { + "box": { + "id": "obj-43", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1100.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-44", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1130.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-45", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1160.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-46", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1190.0, + 65.0, + 22.0 + ], + "text": "sel \"4\"" + } + }, + { + "box": { + "id": "obj-47", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1220.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-48", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1250.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-49", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1280.0, + 247.0, + 22.0 + ], + "text": "test.assert outlets-right-to-left" + } + }, + { + "box": { + "id": "obj-50", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 20.0, + 44.0, + 22.0 + ], + "text": "bang" + } + }, + { + "box": { + "id": "obj-51", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 50.0, + 44.0, + 22.0 + ], + "text": "bang" + } + }, + { + "box": { + "id": "obj-52", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 80.0, + 44.0, + 22.0 + ], + "text": "bang" + } + }, + { + "box": { + "id": "obj-53", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 110.0, + 51.0, + 22.0 + ], + "text": "1 2 3" + } + }, + { + "box": { + "id": "obj-54", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 140.0, + 40.0, + 22.0 + ], + "text": "60" + } + }, + { + "box": { + "id": "obj-55", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 770.0, + 1310.0, + 177.0, + 22.0 + ], + "text": "getattr steps @listen 0" + } + }, + { + "box": { + "id": "obj-56", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1340.0, + 44.0, + 22.0 + ], + "text": "== 5" + } + }, + { + "box": { + "id": "obj-57", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1370.0, + 240.0, + 22.0 + ], + "text": "test.assert attribute-reads-back" + } + }, + { + "box": { + "id": "obj-58", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 20.0, + 65.0, + 22.0 + ], + "text": "error 1" + } + }, + { + "box": { + "id": "obj-59", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 50.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-60", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 80.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-61", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 110.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-62", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 140.0, + 44.0, + 22.0 + ], + "text": "== 0" + } + }, + { + "box": { + "id": "obj-63", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1400.0, + 191.0, + 22.0 + ], + "text": "test.assert console-clean" + } + }, + { + "box": { + "id": "obj-64", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], + "patching_rect": [ + 20.0, + 108.0, + 114.0, + 22.0 + ], + "text": "test.terminate" + } + }, + { + "box": { + "id": "obj-65", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 170.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-66", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 200.0, + 177.0, + 22.0 + ], + "text": "regexp \\\" @substitute '" + } + }, + { + "box": { + "id": "obj-67", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 230.0, + 86.0, + 22.0 + ], + "text": "fromsymbol" + } + }, + { + "box": { + "id": "obj-68", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 1020.0, + 260.0, + 51.0, + 22.0 + ], + "text": "t l b" + } + }, + { + "box": { + "id": "obj-69", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 290.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-70", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 320.0, + 51.0, + 22.0 + ], + "text": "<= 50" + } + }, + { + "box": { + "id": "obj-71", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 350.0, + 72.0, + 22.0 + ], + "text": "gate 1 1" + } + }, + { + "box": { + "id": "obj-72", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], + "patching_rect": [ + 1020.0, + 380.0, + 170.0, + 22.0 + ], + "text": "test.log console-error" + } + }, + { + "box": { + "id": "obj-73", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 138.0, + 72.0, + 22.0 + ], + "text": "loadbang" + } + }, + { + "box": { + "id": "obj-74", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 168.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-75", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 6, + "outlettype": [ + "", + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 198.0, + 107.0, + 22.0 + ], + "text": "t b b b b b b" + } + }, + { + "box": { + "id": "obj-76", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 228.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-77", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 9, + "outlettype": [ + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 258.0, + 149.0, + 22.0 + ], + "text": "t b b b b b b b b b" + } + }, + { + "box": { + "id": "obj-78", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 288.0, + 79.0, + 22.0 + ], + "text": "delay 500" + } + }, + { + "box": { + "id": "obj-79", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 318.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + } + ], + "lines": [ + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-7", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-7", + 0 + ], + "destination": [ + "obj-8", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-8", + 0 + ], + "destination": [ + "obj-9", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-9", + 0 + ], + "destination": [ + "obj-10", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-9", + 1 + ], + "destination": [ + "obj-11", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-10", + 0 + ], + "destination": [ + "obj-12", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-11", + 0 + ], + "destination": [ + "obj-12", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-3", + 0 + ], + "destination": [ + "obj-13", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-13", + 0 + ], + "destination": [ + "obj-14", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-14", + 0 + ], + "destination": [ + "obj-15", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-15", + 0 + ], + "destination": [ + "obj-16", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-15", + 1 + ], + "destination": [ + "obj-17", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-16", + 0 + ], + "destination": [ + "obj-18", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-17", + 0 + ], + "destination": [ + "obj-18", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-4", + 0 + ], + "destination": [ + "obj-19", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-19", + 0 + ], + "destination": [ + "obj-20", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-20", + 0 + ], + "destination": [ + "obj-21", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-21", + 0 + ], + "destination": [ + "obj-22", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-21", + 1 + ], + "destination": [ + "obj-23", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-22", + 0 + ], + "destination": [ + "obj-24", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-23", + 0 + ], + "destination": [ + "obj-24", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-5", + 0 + ], + "destination": [ + "obj-25", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-25", + 0 + ], + "destination": [ + "obj-26", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-26", + 0 + ], + "destination": [ + "obj-27", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-27", + 0 + ], + "destination": [ + "obj-28", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-27", + 1 + ], + "destination": [ + "obj-29", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-28", + 0 + ], + "destination": [ + "obj-30", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-29", + 0 + ], + "destination": [ + "obj-30", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-6", + 0 + ], + "destination": [ + "obj-31", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-31", + 0 + ], + "destination": [ + "obj-32", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-32", + 0 + ], + "destination": [ + "obj-33", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-33", + 0 + ], + "destination": [ + "obj-34", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-33", + 1 + ], + "destination": [ + "obj-35", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-34", + 0 + ], + "destination": [ + "obj-36", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-35", + 0 + ], + "destination": [ + "obj-36", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-6", + 1 + ], + "destination": [ + "obj-37", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-37", + 0 + ], + "destination": [ + "obj-38", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-38", + 0 + ], + "destination": [ + "obj-39", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-39", + 0 + ], + "destination": [ + "obj-40", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-39", + 1 + ], + "destination": [ + "obj-41", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-40", + 0 + ], + "destination": [ + "obj-42", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-41", + 0 + ], + "destination": [ + "obj-42", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-6", + 1 + ], + "destination": [ + "obj-43", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-43", + 0 + ], + "destination": [ + "obj-44", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-6", + 0 + ], + "destination": [ + "obj-45", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-45", + 0 + ], + "destination": [ + "obj-44", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-44", + 0 + ], + "destination": [ + "obj-46", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-46", + 0 + ], + "destination": [ + "obj-47", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-46", + 1 + ], + "destination": [ + "obj-48", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-47", + 0 + ], + "destination": [ + "obj-49", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-48", + 0 + ], + "destination": [ + "obj-49", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-50", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-51", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-52", + 0 + ], + "destination": [ + "obj-4", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-53", + 0 + ], + "destination": [ + "obj-5", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-54", + 0 + ], + "destination": [ + "obj-6", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-55", + 1 + ], + "destination": [ + "obj-4", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-55", + 0 + ], + "destination": [ + "obj-56", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-56", + 0 + ], + "destination": [ + "obj-57", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-58", + 0 + ], + "destination": [ + "obj-59", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-59", + 0 + ], + "destination": [ + "obj-60", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-60", + 0 + ], + "destination": [ + "obj-61", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-61", + 0 + ], + "destination": [ + "obj-62", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-62", + 0 + ], + "destination": [ + "obj-63", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-58", + 0 + ], + "destination": [ + "obj-65", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-65", + 0 + ], + "destination": [ + "obj-66", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-66", + 0 + ], + "destination": [ + "obj-67", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-66", + 3 + ], + "destination": [ + "obj-67", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-67", + 0 + ], + "destination": [ + "obj-68", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-68", + 1 + ], + "destination": [ + "obj-69", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-69", + 0 + ], + "destination": [ + "obj-70", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-70", + 0 + ], + "destination": [ + "obj-71", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-68", + 0 + ], + "destination": [ + "obj-71", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-71", + 0 + ], + "destination": [ + "obj-72", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-73", + 0 + ], + "destination": [ + "obj-74", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-74", + 0 + ], + "destination": [ + "obj-75", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-75", + 5 + ], + "destination": [ + "obj-50", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-75", + 4 + ], + "destination": [ + "obj-51", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-75", + 3 + ], + "destination": [ + "obj-52", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-75", + 2 + ], + "destination": [ + "obj-53", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-75", + 1 + ], + "destination": [ + "obj-54", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-75", + 0 + ], + "destination": [ + "obj-76", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-76", + 0 + ], + "destination": [ + "obj-77", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-77", + 8 + ], + "destination": [ + "obj-8", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-77", + 7 + ], + "destination": [ + "obj-14", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-77", + 6 + ], + "destination": [ + "obj-20", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-77", + 5 + ], + "destination": [ + "obj-26", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-77", + 4 + ], + "destination": [ + "obj-32", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-77", + 3 + ], + "destination": [ + "obj-38", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-77", + 2 + ], + "destination": [ + "obj-55", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-77", + 1 + ], + "destination": [ + "obj-61", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-77", + 0 + ], + "destination": [ + "obj-78", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-78", + 0 + ], + "destination": [ + "obj-79", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-79", + 1 + ], + "destination": [ + "obj-64", + 0 + ] + } + } + ] + } +} diff --git a/runtime-tests/patchers/tap.python.messages.maxtest.maxpat b/runtime-tests/patchers/tap.python.messages.maxtest.maxpat new file mode 100644 index 0000000..86547fa --- /dev/null +++ b/runtime-tests/patchers/tap.python.messages.maxtest.maxpat @@ -0,0 +1,3386 @@ +{ + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 0, + "revision": 8, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "box", + "rect": [ + 60.0, + 80.0, + 1290, + 900.0 + ], + "default_fontsize": 12.0, + "default_fontname": "Arial", + "gridsize": [ + 15.0, + 15.0 + ], + "description": "tap.python.messages", + "boxes": [ + { + "box": { + "id": "obj-1", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ + 20.0, + 20.0, + 480, + 80.0 + ], + "text": "tap.python.messages\n\ntap.python's messages (plan 9.5): an attribute set by its name and read back by getattr, and by get from the dumpout; a method called by its message; a message the class has no method for passed to its anything, with the selector first (int and symbol too, which never reach a class's anything in Max); and a class without anything not understanding one.", + "linecount": 4 + } + }, + { + "box": { + "id": "obj-2", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 520.0, + 20.0, + 198.0, + 22.0 + ], + "text": "tap.python maxtest_forward" + } + }, + { + "box": { + "id": "obj-3", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 520.0, + 50.0, + 177.0, + 22.0 + ], + "text": "tap.python maxtest_echo" + } + }, + { + "box": { + "id": "obj-4", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 20.0, + 65.0, + 22.0 + ], + "text": "error 1" + } + }, + { + "box": { + "id": "obj-5", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 50.0, + 191.0, + 22.0 + ], + "text": "regexp doesn.t.understand" + } + }, + { + "box": { + "id": "obj-6", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 80.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-7", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 110.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-8", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 20.0, + 72.0, + 22.0 + ], + "text": "getsteps" + } + }, + { + "box": { + "id": "obj-9", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 20.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-10", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 50.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-11", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 80.0, + 107.0, + 22.0 + ], + "text": "sel \"steps 8\"" + } + }, + { + "box": { + "id": "obj-12", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 110.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-13", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 140.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-14", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 170.0, + 310.0, + 22.0 + ], + "text": "test.assert get-attribute-from-the-dumpout" + } + }, + { + "box": { + "id": "obj-15", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 50.0, + 65.0, + 22.0 + ], + "text": "steps 3" + } + }, + { + "box": { + "id": "obj-16", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 770.0, + 200.0, + 177.0, + 22.0 + ], + "text": "getattr steps @listen 0" + } + }, + { + "box": { + "id": "obj-17", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 230.0, + 44.0, + 22.0 + ], + "text": "== 3" + } + }, + { + "box": { + "id": "obj-18", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 260.0, + 275.0, + 22.0 + ], + "text": "test.assert attribute-set-by-its-name" + } + }, + { + "box": { + "id": "obj-19", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 80.0, + 72.0, + 22.0 + ], + "text": "getsteps" + } + }, + { + "box": { + "id": "obj-20", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 290.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-21", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 320.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-22", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 350.0, + 107.0, + 22.0 + ], + "text": "sel \"steps 3\"" + } + }, + { + "box": { + "id": "obj-23", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 380.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-24", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 410.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-25", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 440.0, + 268.0, + 22.0 + ], + "text": "test.assert get-attribute-follows-it" + } + }, + { + "box": { + "id": "obj-26", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 110.0, + 65.0, + 22.0 + ], + "text": "hello 1" + } + }, + { + "box": { + "id": "obj-27", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 470.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-28", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 500.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-29", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 530.0, + 65.0, + 22.0 + ], + "text": "sel \"2\"" + } + }, + { + "box": { + "id": "obj-30", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 560.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-31", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 590.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-32", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 620.0, + 296.0, + 22.0 + ], + "text": "test.assert method-called-by-its-message" + } + }, + { + "box": { + "id": "obj-33", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 140.0, + 79.0, + 22.0 + ], + "text": "foo 1 two" + } + }, + { + "box": { + "id": "obj-34", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 650.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-35", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 680.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-36", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 710.0, + 121.0, + 22.0 + ], + "text": "sel \"foo 1 two\"" + } + }, + { + "box": { + "id": "obj-37", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 740.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-38", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 770.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-39", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 800.0, + 324.0, + 22.0 + ], + "text": "test.assert anything-gets-the-selector-first" + } + }, + { + "box": { + "id": "obj-40", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 170.0, + 79.0, + 22.0 + ], + "text": "symbol hi" + } + }, + { + "box": { + "id": "obj-41", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 830.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-42", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 860.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-43", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 890.0, + 121.0, + 22.0 + ], + "text": "sel \"symbol hi\"" + } + }, + { + "box": { + "id": "obj-44", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 920.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-45", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 950.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-46", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 980.0, + 261.0, + 22.0 + ], + "text": "test.assert symbol-reaches-anything" + } + }, + { + "box": { + "id": "obj-47", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 200.0, + 51.0, + 22.0 + ], + "text": "int 5" + } + }, + { + "box": { + "id": "obj-48", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1010.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-49", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1040.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-50", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1070.0, + 65.0, + 22.0 + ], + "text": "sel \"5\"" + } + }, + { + "box": { + "id": "obj-51", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1100.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-52", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1130.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-53", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1160.0, + 240.0, + 22.0 + ], + "text": "test.assert int-reaches-anything" + } + }, + { + "box": { + "id": "obj-54", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 230.0, + 86.0, + 22.0 + ], + "text": "nonesuch 1" + } + }, + { + "box": { + "id": "obj-55", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 140.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-56", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 170.0, + 44.0, + 22.0 + ], + "text": "== 1" + } + }, + { + "box": { + "id": "obj-57", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1190.0, + 317.0, + 22.0 + ], + "text": "test.assert without-anything-not-understood" + } + }, + { + "box": { + "id": "obj-58", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 260.0, + 40.0, + 22.0 + ], + "text": "7" + } + }, + { + "box": { + "id": "obj-59", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1220.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-60", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1250.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-61", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1280.0, + 65.0, + 22.0 + ], + "text": "sel \"7\"" + } + }, + { + "box": { + "id": "obj-62", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1310.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-63", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1340.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-64", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1370.0, + 296.0, + 22.0 + ], + "text": "test.assert its-int-method-still-answers" + } + }, + { + "box": { + "id": "obj-65", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 200.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-66", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 230.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-67", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 260.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-68", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 290.0, + 44.0, + 22.0 + ], + "text": "== 1" + } + }, + { + "box": { + "id": "obj-69", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1400.0, + 254.0, + 22.0 + ], + "text": "test.assert console-clean-but-that" + } + }, + { + "box": { + "id": "obj-70", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], + "patching_rect": [ + 20.0, + 108.0, + 114.0, + 22.0 + ], + "text": "test.terminate" + } + }, + { + "box": { + "id": "obj-71", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 320.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-72", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 350.0, + 177.0, + 22.0 + ], + "text": "regexp \\\" @substitute '" + } + }, + { + "box": { + "id": "obj-73", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 380.0, + 86.0, + 22.0 + ], + "text": "fromsymbol" + } + }, + { + "box": { + "id": "obj-74", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 1020.0, + 410.0, + 51.0, + 22.0 + ], + "text": "t l b" + } + }, + { + "box": { + "id": "obj-75", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 440.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-76", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 470.0, + 51.0, + 22.0 + ], + "text": "<= 50" + } + }, + { + "box": { + "id": "obj-77", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 500.0, + 72.0, + 22.0 + ], + "text": "gate 1 1" + } + }, + { + "box": { + "id": "obj-78", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], + "patching_rect": [ + 1020.0, + 530.0, + 170.0, + 22.0 + ], + "text": "test.log console-error" + } + }, + { + "box": { + "id": "obj-79", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 138.0, + 72.0, + 22.0 + ], + "text": "loadbang" + } + }, + { + "box": { + "id": "obj-80", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 168.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-81", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 198.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-82", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 228.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-83", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 258.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-84", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 288.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-85", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 318.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-86", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 348.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-87", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 378.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-88", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 408.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-89", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 438.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-90", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 468.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-91", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 498.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-92", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 528.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-93", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 558.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-94", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 588.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-95", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 618.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-96", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 648.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-97", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 678.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-98", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 708.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-99", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 738.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-100", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 768.0, + 79.0, + 22.0 + ], + "text": "delay 500" + } + }, + { + "box": { + "id": "obj-101", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 798.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + } + ], + "lines": [ + { + "patchline": { + "source": [ + "obj-4", + 0 + ], + "destination": [ + "obj-5", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-5", + 2 + ], + "destination": [ + "obj-6", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-6", + 0 + ], + "destination": [ + "obj-7", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-8", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 1 + ], + "destination": [ + "obj-9", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-9", + 0 + ], + "destination": [ + "obj-10", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-10", + 0 + ], + "destination": [ + "obj-11", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-11", + 0 + ], + "destination": [ + "obj-12", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-11", + 1 + ], + "destination": [ + "obj-13", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-12", + 0 + ], + "destination": [ + "obj-14", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-13", + 0 + ], + "destination": [ + "obj-14", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-15", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-16", + 1 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-16", + 0 + ], + "destination": [ + "obj-17", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-17", + 0 + ], + "destination": [ + "obj-18", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-19", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 1 + ], + "destination": [ + "obj-20", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-20", + 0 + ], + "destination": [ + "obj-21", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-21", + 0 + ], + "destination": [ + "obj-22", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-22", + 0 + ], + "destination": [ + "obj-23", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-22", + 1 + ], + "destination": [ + "obj-24", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-23", + 0 + ], + "destination": [ + "obj-25", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-24", + 0 + ], + "destination": [ + "obj-25", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-26", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-27", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-27", + 0 + ], + "destination": [ + "obj-28", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-28", + 0 + ], + "destination": [ + "obj-29", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-29", + 0 + ], + "destination": [ + "obj-30", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-29", + 1 + ], + "destination": [ + "obj-31", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-30", + 0 + ], + "destination": [ + "obj-32", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-31", + 0 + ], + "destination": [ + "obj-32", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-33", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-34", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-34", + 0 + ], + "destination": [ + "obj-35", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-35", + 0 + ], + "destination": [ + "obj-36", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-36", + 0 + ], + "destination": [ + "obj-37", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-36", + 1 + ], + "destination": [ + "obj-38", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-37", + 0 + ], + "destination": [ + "obj-39", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-38", + 0 + ], + "destination": [ + "obj-39", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-40", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-41", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-41", + 0 + ], + "destination": [ + "obj-42", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-42", + 0 + ], + "destination": [ + "obj-43", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-43", + 0 + ], + "destination": [ + "obj-44", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-43", + 1 + ], + "destination": [ + "obj-45", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-44", + 0 + ], + "destination": [ + "obj-46", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-45", + 0 + ], + "destination": [ + "obj-46", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-47", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-48", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-48", + 0 + ], + "destination": [ + "obj-49", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-49", + 0 + ], + "destination": [ + "obj-50", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-50", + 0 + ], + "destination": [ + "obj-51", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-50", + 1 + ], + "destination": [ + "obj-52", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-51", + 0 + ], + "destination": [ + "obj-53", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-52", + 0 + ], + "destination": [ + "obj-53", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-54", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-7", + 0 + ], + "destination": [ + "obj-55", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-55", + 0 + ], + "destination": [ + "obj-56", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-56", + 0 + ], + "destination": [ + "obj-57", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-58", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-3", + 0 + ], + "destination": [ + "obj-59", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-59", + 0 + ], + "destination": [ + "obj-60", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-60", + 0 + ], + "destination": [ + "obj-61", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-61", + 0 + ], + "destination": [ + "obj-62", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-61", + 1 + ], + "destination": [ + "obj-63", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-62", + 0 + ], + "destination": [ + "obj-64", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-63", + 0 + ], + "destination": [ + "obj-64", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-4", + 0 + ], + "destination": [ + "obj-65", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-65", + 0 + ], + "destination": [ + "obj-66", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-66", + 0 + ], + "destination": [ + "obj-67", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-67", + 0 + ], + "destination": [ + "obj-68", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-68", + 0 + ], + "destination": [ + "obj-69", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-4", + 0 + ], + "destination": [ + "obj-71", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-71", + 0 + ], + "destination": [ + "obj-72", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-72", + 0 + ], + "destination": [ + "obj-73", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-72", + 3 + ], + "destination": [ + "obj-73", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-73", + 0 + ], + "destination": [ + "obj-74", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-74", + 1 + ], + "destination": [ + "obj-75", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-75", + 0 + ], + "destination": [ + "obj-76", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-76", + 0 + ], + "destination": [ + "obj-77", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-74", + 0 + ], + "destination": [ + "obj-77", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-77", + 0 + ], + "destination": [ + "obj-78", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-79", + 0 + ], + "destination": [ + "obj-80", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-80", + 0 + ], + "destination": [ + "obj-81", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-81", + 1 + ], + "destination": [ + "obj-8", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-81", + 0 + ], + "destination": [ + "obj-82", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-82", + 0 + ], + "destination": [ + "obj-83", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-83", + 2 + ], + "destination": [ + "obj-10", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-83", + 1 + ], + "destination": [ + "obj-15", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-83", + 0 + ], + "destination": [ + "obj-84", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-84", + 0 + ], + "destination": [ + "obj-85", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-85", + 2 + ], + "destination": [ + "obj-16", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-85", + 1 + ], + "destination": [ + "obj-19", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-85", + 0 + ], + "destination": [ + "obj-86", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-86", + 0 + ], + "destination": [ + "obj-87", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-87", + 2 + ], + "destination": [ + "obj-21", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-87", + 1 + ], + "destination": [ + "obj-26", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-87", + 0 + ], + "destination": [ + "obj-88", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-88", + 0 + ], + "destination": [ + "obj-89", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-89", + 2 + ], + "destination": [ + "obj-28", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-89", + 1 + ], + "destination": [ + "obj-33", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-89", + 0 + ], + "destination": [ + "obj-90", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-90", + 0 + ], + "destination": [ + "obj-91", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-91", + 2 + ], + "destination": [ + "obj-35", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-91", + 1 + ], + "destination": [ + "obj-40", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-91", + 0 + ], + "destination": [ + "obj-92", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-92", + 0 + ], + "destination": [ + "obj-93", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-93", + 2 + ], + "destination": [ + "obj-42", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-93", + 1 + ], + "destination": [ + "obj-47", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-93", + 0 + ], + "destination": [ + "obj-94", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-94", + 0 + ], + "destination": [ + "obj-95", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-95", + 2 + ], + "destination": [ + "obj-49", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-95", + 1 + ], + "destination": [ + "obj-54", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-95", + 0 + ], + "destination": [ + "obj-96", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-96", + 0 + ], + "destination": [ + "obj-97", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-97", + 2 + ], + "destination": [ + "obj-55", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-97", + 1 + ], + "destination": [ + "obj-58", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-97", + 0 + ], + "destination": [ + "obj-98", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-98", + 0 + ], + "destination": [ + "obj-99", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-99", + 2 + ], + "destination": [ + "obj-60", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-99", + 1 + ], + "destination": [ + "obj-67", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-99", + 0 + ], + "destination": [ + "obj-100", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-100", + 0 + ], + "destination": [ + "obj-101", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-101", + 1 + ], + "destination": [ + "obj-70", + 0 + ] + } + } + ] + } +} diff --git a/runtime-tests/patchers/tap.python.outputs.maxtest.maxpat b/runtime-tests/patchers/tap.python.outputs.maxtest.maxpat new file mode 100644 index 0000000..e72eecd --- /dev/null +++ b/runtime-tests/patchers/tap.python.outputs.maxtest.maxpat @@ -0,0 +1,6838 @@ +{ + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 0, + "revision": 8, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "box", + "rect": [ + 60.0, + 80.0, + 1290, + 900.0 + ], + "default_fontsize": 12.0, + "default_fontname": "Arial", + "gridsize": [ + 15.0, + 15.0 + ], + "description": "tap.python.outputs", + "boxes": [ + { + "box": { + "id": "obj-1", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ + 20.0, + 20.0, + 480, + 80.0 + ], + "text": "tap.python.outputs\n\nEvery row of tap.python's output table (plan 9.5), one method of maxtest_outputs each: None nothing; a bool (numpy's too) 0 or 1; an int, a float; a str as symbol , whatever it says; a list, an unhinted tuple, an array as a list; a list whose first element is a str the message it names; an empty list nothing; a value past 64 bits, a dict or a nested list nothing, reported; a tuple[str, int] one value per outlet, None in a slot nothing from it.", + "linecount": 4 + } + }, + { + "box": { + "id": "obj-2", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 520.0, + 20.0, + 198.0, + 22.0 + ], + "text": "tap.python maxtest_outputs" + } + }, + { + "box": { + "id": "obj-3", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 20.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-4", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 770.0, + 50.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-5", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 80.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-6", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 770.0, + 110.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-7", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 20.0, + 65.0, + 22.0 + ], + "text": "error 1" + } + }, + { + "box": { + "id": "obj-8", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 50.0, + 163.0, + 22.0 + ], + "text": "regexp nothing.output" + } + }, + { + "box": { + "id": "obj-9", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 80.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-10", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 110.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-11", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 20.0, + 65.0, + 22.0 + ], + "text": "nothing" + } + }, + { + "box": { + "id": "obj-12", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 140.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-13", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 170.0, + 44.0, + 22.0 + ], + "text": "== 0" + } + }, + { + "box": { + "id": "obj-14", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 200.0, + 261.0, + 22.0 + ], + "text": "test.assert nothing-outputs-nothing" + } + }, + { + "box": { + "id": "obj-15", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 140.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-16", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 170.0, + 44.0, + 22.0 + ], + "text": "== 0" + } + }, + { + "box": { + "id": "obj-17", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 230.0, + 261.0, + 22.0 + ], + "text": "test.assert nothing-reported-or-not" + } + }, + { + "box": { + "id": "obj-18", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 50.0, + 40.0, + 22.0 + ], + "text": "yes" + } + }, + { + "box": { + "id": "obj-19", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 260.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-20", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 290.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-21", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 320.0, + 65.0, + 22.0 + ], + "text": "sel \"1\"" + } + }, + { + "box": { + "id": "obj-22", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 350.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-23", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 380.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-24", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 410.0, + 191.0, + 22.0 + ], + "text": "test.assert yes-outputs-1" + } + }, + { + "box": { + "id": "obj-25", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 80.0, + 72.0, + 22.0 + ], + "text": "numpy_no" + } + }, + { + "box": { + "id": "obj-26", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 440.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-27", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 470.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-28", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 500.0, + 65.0, + 22.0 + ], + "text": "sel \"0\"" + } + }, + { + "box": { + "id": "obj-29", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 530.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-30", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 560.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-31", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 590.0, + 226.0, + 22.0 + ], + "text": "test.assert numpy_no-outputs-0" + } + }, + { + "box": { + "id": "obj-32", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 110.0, + 65.0, + 22.0 + ], + "text": "integer" + } + }, + { + "box": { + "id": "obj-33", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 620.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-34", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 650.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-35", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 680.0, + 72.0, + 22.0 + ], + "text": "sel \"42\"" + } + }, + { + "box": { + "id": "obj-36", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 710.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-37", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 740.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-38", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 770.0, + 226.0, + 22.0 + ], + "text": "test.assert integer-outputs-42" + } + }, + { + "box": { + "id": "obj-39", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 140.0, + 44.0, + 22.0 + ], + "text": "real" + } + }, + { + "box": { + "id": "obj-40", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 800.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-41", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 830.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-42", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 860.0, + 100.0, + 22.0 + ], + "text": "sel \"0.5000\"" + } + }, + { + "box": { + "id": "obj-43", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 890.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-44", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 920.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-45", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 950.0, + 233.0, + 22.0 + ], + "text": "test.assert real-outputs-0.5000" + } + }, + { + "box": { + "id": "obj-46", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 170.0, + 44.0, + 22.0 + ], + "text": "text" + } + }, + { + "box": { + "id": "obj-47", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 980.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-48", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1010.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-49", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1040.0, + 184.0, + 22.0 + ], + "text": "sel \"symbol hello world\"" + } + }, + { + "box": { + "id": "obj-50", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1070.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-51", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1100.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-52", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1130.0, + 317.0, + 22.0 + ], + "text": "test.assert text-outputs-symbol-hello-world" + } + }, + { + "box": { + "id": "obj-53", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 200.0, + 44.0, + 22.0 + ], + "text": "word" + } + }, + { + "box": { + "id": "obj-54", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1160.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-55", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1190.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-56", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1220.0, + 135.0, + 22.0 + ], + "text": "sel \"symbol bang\"" + } + }, + { + "box": { + "id": "obj-57", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1250.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-58", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1280.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-59", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1310.0, + 268.0, + 22.0 + ], + "text": "test.assert word-outputs-symbol-bang" + } + }, + { + "box": { + "id": "obj-60", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 230.0, + 65.0, + 22.0 + ], + "text": "numbers" + } + }, + { + "box": { + "id": "obj-61", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1340.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-62", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1370.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-63", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1400.0, + 128.0, + 22.0 + ], + "text": "sel \"1 2.5000 3\"" + } + }, + { + "box": { + "id": "obj-64", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1430.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-65", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1460.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-66", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1490.0, + 282.0, + 22.0 + ], + "text": "test.assert numbers-outputs-1-2.5000-3" + } + }, + { + "box": { + "id": "obj-67", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 260.0, + 65.0, + 22.0 + ], + "text": "message" + } + }, + { + "box": { + "id": "obj-68", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1520.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-69", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1550.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-70", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1580.0, + 135.0, + 22.0 + ], + "text": "sel \"note 60 100\"" + } + }, + { + "box": { + "id": "obj-71", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1610.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-72", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1640.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-73", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1670.0, + 289.0, + 22.0 + ], + "text": "test.assert message-outputs-note-60-100" + } + }, + { + "box": { + "id": "obj-74", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 290.0, + 44.0, + 22.0 + ], + "text": "pair" + } + }, + { + "box": { + "id": "obj-75", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1700.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-76", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1730.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-77", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1760.0, + 79.0, + 22.0 + ], + "text": "sel \"7 8\"" + } + }, + { + "box": { + "id": "obj-78", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1790.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-79", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1820.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-80", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1850.0, + 212.0, + 22.0 + ], + "text": "test.assert pair-outputs-7-8" + } + }, + { + "box": { + "id": "obj-81", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 320.0, + 51.0, + 22.0 + ], + "text": "array" + } + }, + { + "box": { + "id": "obj-82", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1880.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-83", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1910.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-84", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 1940.0, + 149.0, + 22.0 + ], + "text": "sel \"1.0000 2.0000\"" + } + }, + { + "box": { + "id": "obj-85", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1970.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-86", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2000.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-87", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2030.0, + 289.0, + 22.0 + ], + "text": "test.assert array-outputs-1.0000-2.0000" + } + }, + { + "box": { + "id": "obj-88", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 350.0, + 58.0, + 22.0 + ], + "text": "scalar" + } + }, + { + "box": { + "id": "obj-89", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2060.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-90", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 2090.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-91", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 2120.0, + 100.0, + 22.0 + ], + "text": "sel \"0.2500\"" + } + }, + { + "box": { + "id": "obj-92", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2150.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-93", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2180.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-94", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2210.0, + 247.0, + 22.0 + ], + "text": "test.assert scalar-outputs-0.2500" + } + }, + { + "box": { + "id": "obj-95", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 380.0, + 51.0, + 22.0 + ], + "text": "empty" + } + }, + { + "box": { + "id": "obj-96", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2240.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-97", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2270.0, + 51.0, + 22.0 + ], + "text": "== 11" + } + }, + { + "box": { + "id": "obj-98", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2300.0, + 247.0, + 22.0 + ], + "text": "test.assert empty-outputs-nothing" + } + }, + { + "box": { + "id": "obj-99", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 200.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-100", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 230.0, + 44.0, + 22.0 + ], + "text": "== 0" + } + }, + { + "box": { + "id": "obj-101", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2330.0, + 247.0, + 22.0 + ], + "text": "test.assert empty-reported-or-not" + } + }, + { + "box": { + "id": "obj-102", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 410.0, + 40.0, + 22.0 + ], + "text": "big" + } + }, + { + "box": { + "id": "obj-103", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2360.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-104", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2390.0, + 51.0, + 22.0 + ], + "text": "== 11" + } + }, + { + "box": { + "id": "obj-105", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2420.0, + 233.0, + 22.0 + ], + "text": "test.assert big-outputs-nothing" + } + }, + { + "box": { + "id": "obj-106", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 260.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-107", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 290.0, + 44.0, + 22.0 + ], + "text": "== 1" + } + }, + { + "box": { + "id": "obj-108", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2450.0, + 233.0, + 22.0 + ], + "text": "test.assert big-reported-or-not" + } + }, + { + "box": { + "id": "obj-109", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 440.0, + 65.0, + 22.0 + ], + "text": "mapping" + } + }, + { + "box": { + "id": "obj-110", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2480.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-111", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2510.0, + 51.0, + 22.0 + ], + "text": "== 11" + } + }, + { + "box": { + "id": "obj-112", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2540.0, + 261.0, + 22.0 + ], + "text": "test.assert mapping-outputs-nothing" + } + }, + { + "box": { + "id": "obj-113", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 320.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-114", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 350.0, + 44.0, + 22.0 + ], + "text": "== 2" + } + }, + { + "box": { + "id": "obj-115", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2570.0, + 261.0, + 22.0 + ], + "text": "test.assert mapping-reported-or-not" + } + }, + { + "box": { + "id": "obj-116", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 470.0, + 58.0, + 22.0 + ], + "text": "nested" + } + }, + { + "box": { + "id": "obj-117", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2600.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-118", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2630.0, + 51.0, + 22.0 + ], + "text": "== 11" + } + }, + { + "box": { + "id": "obj-119", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2660.0, + 254.0, + 22.0 + ], + "text": "test.assert nested-outputs-nothing" + } + }, + { + "box": { + "id": "obj-120", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 380.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-121", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 410.0, + 44.0, + 22.0 + ], + "text": "== 3" + } + }, + { + "box": { + "id": "obj-122", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2690.0, + 254.0, + 22.0 + ], + "text": "test.assert nested-reported-or-not" + } + }, + { + "box": { + "id": "obj-123", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 500.0, + 58.0, + 22.0 + ], + "text": "spread" + } + }, + { + "box": { + "id": "obj-124", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2720.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-125", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 2750.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-126", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 2780.0, + 135.0, + 22.0 + ], + "text": "sel \"symbol left\"" + } + }, + { + "box": { + "id": "obj-127", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2810.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-128", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2840.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-129", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2870.0, + 282.0, + 22.0 + ], + "text": "test.assert spread-outputs-symbol-left" + } + }, + { + "box": { + "id": "obj-130", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2900.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-131", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 2930.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-132", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 2960.0, + 65.0, + 22.0 + ], + "text": "sel \"9\"" + } + }, + { + "box": { + "id": "obj-133", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 2990.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-134", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 3020.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-135", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 3050.0, + 240.0, + 22.0 + ], + "text": "test.assert spread-second-outlet" + } + }, + { + "box": { + "id": "obj-136", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 530.0, + 65.0, + 22.0 + ], + "text": "partial" + } + }, + { + "box": { + "id": "obj-137", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 3080.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-138", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 3110.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-139", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 3140.0, + 65.0, + 22.0 + ], + "text": "sel \"5\"" + } + }, + { + "box": { + "id": "obj-140", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 3170.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-141", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 3200.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-142", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 3230.0, + 247.0, + 22.0 + ], + "text": "test.assert partial-second-outlet" + } + }, + { + "box": { + "id": "obj-143", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 3260.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-144", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 3290.0, + 51.0, + 22.0 + ], + "text": "== 12" + } + }, + { + "box": { + "id": "obj-145", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 3320.0, + 366.0, + 22.0 + ], + "text": "test.assert partial-outputs-nothing-from-the-first" + } + }, + { + "box": { + "id": "obj-146", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 3350.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-147", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 3380.0, + 44.0, + 22.0 + ], + "text": "== 2" + } + }, + { + "box": { + "id": "obj-148", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 3410.0, + 233.0, + 22.0 + ], + "text": "test.assert second-outlet-twice" + } + }, + { + "box": { + "id": "obj-149", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 440.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-150", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 470.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-151", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 500.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-152", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 530.0, + 44.0, + 22.0 + ], + "text": "== 3" + } + }, + { + "box": { + "id": "obj-153", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 3440.0, + 345.0, + 22.0 + ], + "text": "test.assert only-what-cannot-be-output-reported" + } + }, + { + "box": { + "id": "obj-154", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], + "patching_rect": [ + 20.0, + 108.0, + 114.0, + 22.0 + ], + "text": "test.terminate" + } + }, + { + "box": { + "id": "obj-155", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 560.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-156", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 590.0, + 177.0, + 22.0 + ], + "text": "regexp \\\" @substitute '" + } + }, + { + "box": { + "id": "obj-157", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 620.0, + 86.0, + 22.0 + ], + "text": "fromsymbol" + } + }, + { + "box": { + "id": "obj-158", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 1020.0, + 650.0, + 51.0, + 22.0 + ], + "text": "t l b" + } + }, + { + "box": { + "id": "obj-159", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 680.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-160", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 710.0, + 51.0, + 22.0 + ], + "text": "<= 50" + } + }, + { + "box": { + "id": "obj-161", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 740.0, + 72.0, + 22.0 + ], + "text": "gate 1 1" + } + }, + { + "box": { + "id": "obj-162", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], + "patching_rect": [ + 1020.0, + 770.0, + 170.0, + 22.0 + ], + "text": "test.log console-error" + } + }, + { + "box": { + "id": "obj-163", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 138.0, + 72.0, + 22.0 + ], + "text": "loadbang" + } + }, + { + "box": { + "id": "obj-164", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 168.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-165", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 198.0, + 79.0, + 22.0 + ], + "text": "t b b b b" + } + }, + { + "box": { + "id": "obj-166", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 228.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-167", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 258.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-168", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 288.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-169", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 318.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-170", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 348.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-171", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 378.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-172", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 408.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-173", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 438.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-174", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 468.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-175", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 498.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-176", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 528.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-177", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 558.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-178", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 588.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-179", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 618.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-180", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 648.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-181", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 678.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-182", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 708.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-183", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 738.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-184", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 768.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-185", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 798.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-186", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 828.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-187", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 858.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-188", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 888.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-189", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 918.0, + 79.0, + 22.0 + ], + "text": "t b b b b" + } + }, + { + "box": { + "id": "obj-190", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 948.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-191", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 978.0, + 79.0, + 22.0 + ], + "text": "t b b b b" + } + }, + { + "box": { + "id": "obj-192", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 1008.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-193", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 1038.0, + 79.0, + 22.0 + ], + "text": "t b b b b" + } + }, + { + "box": { + "id": "obj-194", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 1068.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-195", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 1098.0, + 79.0, + 22.0 + ], + "text": "t b b b b" + } + }, + { + "box": { + "id": "obj-196", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 1128.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-197", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 1158.0, + 79.0, + 22.0 + ], + "text": "t b b b b" + } + }, + { + "box": { + "id": "obj-198", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 1188.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-199", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 6, + "outlettype": [ + "", + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 1218.0, + 107.0, + 22.0 + ], + "text": "t b b b b b b" + } + }, + { + "box": { + "id": "obj-200", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 1248.0, + 79.0, + 22.0 + ], + "text": "delay 500" + } + }, + { + "box": { + "id": "obj-201", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 1278.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + } + ], + "lines": [ + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-3", + 0 + ], + "destination": [ + "obj-4", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 1 + ], + "destination": [ + "obj-5", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-5", + 0 + ], + "destination": [ + "obj-6", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-7", + 0 + ], + "destination": [ + "obj-8", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-8", + 2 + ], + "destination": [ + "obj-9", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-9", + 0 + ], + "destination": [ + "obj-10", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-11", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-4", + 0 + ], + "destination": [ + "obj-12", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-12", + 0 + ], + "destination": [ + "obj-13", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-13", + 0 + ], + "destination": [ + "obj-14", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-10", + 0 + ], + "destination": [ + "obj-15", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-15", + 0 + ], + "destination": [ + "obj-16", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-16", + 0 + ], + "destination": [ + "obj-17", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-18", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-19", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-19", + 0 + ], + "destination": [ + "obj-20", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-20", + 0 + ], + "destination": [ + "obj-21", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-21", + 0 + ], + "destination": [ + "obj-22", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-21", + 1 + ], + "destination": [ + "obj-23", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-22", + 0 + ], + "destination": [ + "obj-24", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-23", + 0 + ], + "destination": [ + "obj-24", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-25", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-26", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-26", + 0 + ], + "destination": [ + "obj-27", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-27", + 0 + ], + "destination": [ + "obj-28", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-28", + 0 + ], + "destination": [ + "obj-29", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-28", + 1 + ], + "destination": [ + "obj-30", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-29", + 0 + ], + "destination": [ + "obj-31", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-30", + 0 + ], + "destination": [ + "obj-31", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-32", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-33", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-33", + 0 + ], + "destination": [ + "obj-34", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-34", + 0 + ], + "destination": [ + "obj-35", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-35", + 0 + ], + "destination": [ + "obj-36", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-35", + 1 + ], + "destination": [ + "obj-37", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-36", + 0 + ], + "destination": [ + "obj-38", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-37", + 0 + ], + "destination": [ + "obj-38", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-39", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-40", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-40", + 0 + ], + "destination": [ + "obj-41", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-41", + 0 + ], + "destination": [ + "obj-42", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-42", + 0 + ], + "destination": [ + "obj-43", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-42", + 1 + ], + "destination": [ + "obj-44", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-43", + 0 + ], + "destination": [ + "obj-45", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-44", + 0 + ], + "destination": [ + "obj-45", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-46", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-47", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-47", + 0 + ], + "destination": [ + "obj-48", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-48", + 0 + ], + "destination": [ + "obj-49", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-49", + 0 + ], + "destination": [ + "obj-50", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-49", + 1 + ], + "destination": [ + "obj-51", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-50", + 0 + ], + "destination": [ + "obj-52", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-51", + 0 + ], + "destination": [ + "obj-52", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-53", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-54", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-54", + 0 + ], + "destination": [ + "obj-55", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-55", + 0 + ], + "destination": [ + "obj-56", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-56", + 0 + ], + "destination": [ + "obj-57", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-56", + 1 + ], + "destination": [ + "obj-58", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-57", + 0 + ], + "destination": [ + "obj-59", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-58", + 0 + ], + "destination": [ + "obj-59", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-60", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-61", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-61", + 0 + ], + "destination": [ + "obj-62", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-62", + 0 + ], + "destination": [ + "obj-63", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-63", + 0 + ], + "destination": [ + "obj-64", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-63", + 1 + ], + "destination": [ + "obj-65", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-64", + 0 + ], + "destination": [ + "obj-66", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-65", + 0 + ], + "destination": [ + "obj-66", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-67", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-68", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-68", + 0 + ], + "destination": [ + "obj-69", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-69", + 0 + ], + "destination": [ + "obj-70", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-70", + 0 + ], + "destination": [ + "obj-71", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-70", + 1 + ], + "destination": [ + "obj-72", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-71", + 0 + ], + "destination": [ + "obj-73", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-72", + 0 + ], + "destination": [ + "obj-73", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-74", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-75", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-75", + 0 + ], + "destination": [ + "obj-76", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-76", + 0 + ], + "destination": [ + "obj-77", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-77", + 0 + ], + "destination": [ + "obj-78", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-77", + 1 + ], + "destination": [ + "obj-79", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-78", + 0 + ], + "destination": [ + "obj-80", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-79", + 0 + ], + "destination": [ + "obj-80", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-81", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-82", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-82", + 0 + ], + "destination": [ + "obj-83", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-83", + 0 + ], + "destination": [ + "obj-84", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-84", + 0 + ], + "destination": [ + "obj-85", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-84", + 1 + ], + "destination": [ + "obj-86", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-85", + 0 + ], + "destination": [ + "obj-87", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-86", + 0 + ], + "destination": [ + "obj-87", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-88", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-89", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-89", + 0 + ], + "destination": [ + "obj-90", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-90", + 0 + ], + "destination": [ + "obj-91", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-91", + 0 + ], + "destination": [ + "obj-92", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-91", + 1 + ], + "destination": [ + "obj-93", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-92", + 0 + ], + "destination": [ + "obj-94", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-93", + 0 + ], + "destination": [ + "obj-94", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-95", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-4", + 0 + ], + "destination": [ + "obj-96", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-96", + 0 + ], + "destination": [ + "obj-97", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-97", + 0 + ], + "destination": [ + "obj-98", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-10", + 0 + ], + "destination": [ + "obj-99", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-99", + 0 + ], + "destination": [ + "obj-100", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-100", + 0 + ], + "destination": [ + "obj-101", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-102", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-4", + 0 + ], + "destination": [ + "obj-103", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-103", + 0 + ], + "destination": [ + "obj-104", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-104", + 0 + ], + "destination": [ + "obj-105", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-10", + 0 + ], + "destination": [ + "obj-106", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-106", + 0 + ], + "destination": [ + "obj-107", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-107", + 0 + ], + "destination": [ + "obj-108", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-109", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-4", + 0 + ], + "destination": [ + "obj-110", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-110", + 0 + ], + "destination": [ + "obj-111", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-111", + 0 + ], + "destination": [ + "obj-112", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-10", + 0 + ], + "destination": [ + "obj-113", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-113", + 0 + ], + "destination": [ + "obj-114", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-114", + 0 + ], + "destination": [ + "obj-115", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-116", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-4", + 0 + ], + "destination": [ + "obj-117", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-117", + 0 + ], + "destination": [ + "obj-118", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-118", + 0 + ], + "destination": [ + "obj-119", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-10", + 0 + ], + "destination": [ + "obj-120", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-120", + 0 + ], + "destination": [ + "obj-121", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-121", + 0 + ], + "destination": [ + "obj-122", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-123", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-124", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-124", + 0 + ], + "destination": [ + "obj-125", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-125", + 0 + ], + "destination": [ + "obj-126", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-126", + 0 + ], + "destination": [ + "obj-127", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-126", + 1 + ], + "destination": [ + "obj-128", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-127", + 0 + ], + "destination": [ + "obj-129", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-128", + 0 + ], + "destination": [ + "obj-129", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 1 + ], + "destination": [ + "obj-130", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-130", + 0 + ], + "destination": [ + "obj-131", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-131", + 0 + ], + "destination": [ + "obj-132", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-132", + 0 + ], + "destination": [ + "obj-133", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-132", + 1 + ], + "destination": [ + "obj-134", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-133", + 0 + ], + "destination": [ + "obj-135", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-134", + 0 + ], + "destination": [ + "obj-135", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-136", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 1 + ], + "destination": [ + "obj-137", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-137", + 0 + ], + "destination": [ + "obj-138", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-138", + 0 + ], + "destination": [ + "obj-139", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-139", + 0 + ], + "destination": [ + "obj-140", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-139", + 1 + ], + "destination": [ + "obj-141", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-140", + 0 + ], + "destination": [ + "obj-142", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-141", + 0 + ], + "destination": [ + "obj-142", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-4", + 0 + ], + "destination": [ + "obj-143", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-143", + 0 + ], + "destination": [ + "obj-144", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-144", + 0 + ], + "destination": [ + "obj-145", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-6", + 0 + ], + "destination": [ + "obj-146", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-146", + 0 + ], + "destination": [ + "obj-147", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-147", + 0 + ], + "destination": [ + "obj-148", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-7", + 0 + ], + "destination": [ + "obj-149", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-149", + 0 + ], + "destination": [ + "obj-150", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-150", + 0 + ], + "destination": [ + "obj-151", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-151", + 0 + ], + "destination": [ + "obj-152", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-152", + 0 + ], + "destination": [ + "obj-153", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-7", + 0 + ], + "destination": [ + "obj-155", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-155", + 0 + ], + "destination": [ + "obj-156", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-156", + 0 + ], + "destination": [ + "obj-157", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-156", + 3 + ], + "destination": [ + "obj-157", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-157", + 0 + ], + "destination": [ + "obj-158", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-158", + 1 + ], + "destination": [ + "obj-159", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-159", + 0 + ], + "destination": [ + "obj-160", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-160", + 0 + ], + "destination": [ + "obj-161", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-158", + 0 + ], + "destination": [ + "obj-161", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-161", + 0 + ], + "destination": [ + "obj-162", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-163", + 0 + ], + "destination": [ + "obj-164", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-164", + 0 + ], + "destination": [ + "obj-165", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-165", + 3 + ], + "destination": [ + "obj-11", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-165", + 2 + ], + "destination": [ + "obj-12", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-165", + 1 + ], + "destination": [ + "obj-15", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-165", + 0 + ], + "destination": [ + "obj-166", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-166", + 0 + ], + "destination": [ + "obj-167", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-167", + 2 + ], + "destination": [ + "obj-18", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-167", + 1 + ], + "destination": [ + "obj-20", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-167", + 0 + ], + "destination": [ + "obj-168", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-168", + 0 + ], + "destination": [ + "obj-169", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-169", + 2 + ], + "destination": [ + "obj-25", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-169", + 1 + ], + "destination": [ + "obj-27", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-169", + 0 + ], + "destination": [ + "obj-170", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-170", + 0 + ], + "destination": [ + "obj-171", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-171", + 2 + ], + "destination": [ + "obj-32", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-171", + 1 + ], + "destination": [ + "obj-34", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-171", + 0 + ], + "destination": [ + "obj-172", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-172", + 0 + ], + "destination": [ + "obj-173", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-173", + 2 + ], + "destination": [ + "obj-39", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-173", + 1 + ], + "destination": [ + "obj-41", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-173", + 0 + ], + "destination": [ + "obj-174", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-174", + 0 + ], + "destination": [ + "obj-175", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-175", + 2 + ], + "destination": [ + "obj-46", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-175", + 1 + ], + "destination": [ + "obj-48", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-175", + 0 + ], + "destination": [ + "obj-176", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-176", + 0 + ], + "destination": [ + "obj-177", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-177", + 2 + ], + "destination": [ + "obj-53", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-177", + 1 + ], + "destination": [ + "obj-55", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-177", + 0 + ], + "destination": [ + "obj-178", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-178", + 0 + ], + "destination": [ + "obj-179", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-179", + 2 + ], + "destination": [ + "obj-60", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-179", + 1 + ], + "destination": [ + "obj-62", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-179", + 0 + ], + "destination": [ + "obj-180", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-180", + 0 + ], + "destination": [ + "obj-181", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-181", + 2 + ], + "destination": [ + "obj-67", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-181", + 1 + ], + "destination": [ + "obj-69", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-181", + 0 + ], + "destination": [ + "obj-182", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-182", + 0 + ], + "destination": [ + "obj-183", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-183", + 2 + ], + "destination": [ + "obj-74", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-183", + 1 + ], + "destination": [ + "obj-76", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-183", + 0 + ], + "destination": [ + "obj-184", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-184", + 0 + ], + "destination": [ + "obj-185", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-185", + 2 + ], + "destination": [ + "obj-81", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-185", + 1 + ], + "destination": [ + "obj-83", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-185", + 0 + ], + "destination": [ + "obj-186", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-186", + 0 + ], + "destination": [ + "obj-187", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-187", + 2 + ], + "destination": [ + "obj-88", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-187", + 1 + ], + "destination": [ + "obj-90", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-187", + 0 + ], + "destination": [ + "obj-188", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-188", + 0 + ], + "destination": [ + "obj-189", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-189", + 3 + ], + "destination": [ + "obj-95", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-189", + 2 + ], + "destination": [ + "obj-96", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-189", + 1 + ], + "destination": [ + "obj-99", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-189", + 0 + ], + "destination": [ + "obj-190", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-190", + 0 + ], + "destination": [ + "obj-191", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-191", + 3 + ], + "destination": [ + "obj-102", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-191", + 2 + ], + "destination": [ + "obj-103", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-191", + 1 + ], + "destination": [ + "obj-106", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-191", + 0 + ], + "destination": [ + "obj-192", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-192", + 0 + ], + "destination": [ + "obj-193", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-193", + 3 + ], + "destination": [ + "obj-109", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-193", + 2 + ], + "destination": [ + "obj-110", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-193", + 1 + ], + "destination": [ + "obj-113", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-193", + 0 + ], + "destination": [ + "obj-194", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-194", + 0 + ], + "destination": [ + "obj-195", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-195", + 3 + ], + "destination": [ + "obj-116", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-195", + 2 + ], + "destination": [ + "obj-117", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-195", + 1 + ], + "destination": [ + "obj-120", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-195", + 0 + ], + "destination": [ + "obj-196", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-196", + 0 + ], + "destination": [ + "obj-197", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-197", + 3 + ], + "destination": [ + "obj-123", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-197", + 2 + ], + "destination": [ + "obj-125", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-197", + 1 + ], + "destination": [ + "obj-131", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-197", + 0 + ], + "destination": [ + "obj-198", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-198", + 0 + ], + "destination": [ + "obj-199", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-199", + 5 + ], + "destination": [ + "obj-136", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-199", + 4 + ], + "destination": [ + "obj-138", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-199", + 3 + ], + "destination": [ + "obj-143", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-199", + 2 + ], + "destination": [ + "obj-146", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-199", + 1 + ], + "destination": [ + "obj-151", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-199", + 0 + ], + "destination": [ + "obj-200", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-200", + 0 + ], + "destination": [ + "obj-201", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-201", + 1 + ], + "destination": [ + "obj-154", + 0 + ] + } + } + ] + } +} diff --git a/runtime-tests/patchers/tap.python.reload.maxtest.maxpat b/runtime-tests/patchers/tap.python.reload.maxtest.maxpat new file mode 100644 index 0000000..ea6267b --- /dev/null +++ b/runtime-tests/patchers/tap.python.reload.maxtest.maxpat @@ -0,0 +1,3417 @@ +{ + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 0, + "revision": 8, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "box", + "rect": [ + 60.0, + 80.0, + 1290, + 900.0 + ], + "default_fontsize": 12.0, + "default_fontname": "Arial", + "gridsize": [ + 15.0, + 15.0 + ], + "description": "tap.python.reload", + "boxes": [ + { + "box": { + "id": "obj-1", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ + 20.0, + 20.0, + 480, + 80.0 + ], + "text": "tap.python.reload\n\ntap.python reloading (plan 9.5): a save that widens a method's tuple return hint adds an outlet in place, before the dumpout, which takes a patch cord and carries its value, while the cords of the outlets that stay keep theirs; narrowing removes it with its cord; a file that fails to load is reported once and outputs nothing until a save fixes it.", + "linecount": 4 + } + }, + { + "box": { + "id": "obj-2", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 520.0, + 20.0, + 184.0, + 22.0 + ], + "text": "tap.python maxtest_widen", + "varname": "widen" + } + }, + { + "box": { + "id": "obj-3", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "signal" + ], + "patching_rect": [ + 270.0, + 20.0, + 198.0, + 22.0 + ], + "text": "tap.python~ maxtest_editor" + } + }, + { + "box": { + "id": "obj-4", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 20.0, + 40.0, + 22.0 + ], + "text": "t l", + "varname": "added" + } + }, + { + "box": { + "id": "obj-5", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 520.0, + 50.0, + 93.0, + 22.0 + ], + "text": "thispatcher" + } + }, + { + "box": { + "id": "obj-6", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 50.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-7", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 770.0, + 80.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-8", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 110.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-9", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 770.0, + 140.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-10", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 170.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-11", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 770.0, + 200.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-12", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 20.0, + 65.0, + 22.0 + ], + "text": "error 1" + } + }, + { + "box": { + "id": "obj-13", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 50.0, + 163.0, + 22.0 + ], + "text": "regexp Failed.to.load" + } + }, + { + "box": { + "id": "obj-14", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 80.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-15", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 110.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-16", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 50.0, + 44.0, + 22.0 + ], + "text": "bang" + } + }, + { + "box": { + "id": "obj-17", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 230.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-18", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 260.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-19", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 290.0, + 65.0, + 22.0 + ], + "text": "sel \"1\"" + } + }, + { + "box": { + "id": "obj-20", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 320.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-21", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 350.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-22", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 380.0, + 163.0, + 22.0 + ], + "text": "test.assert one-value" + } + }, + { + "box": { + "id": "obj-23", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 80.0, + 177.0, + 22.0 + ], + "text": "returns maxtest_widen 2" + } + }, + { + "box": { + "id": "obj-24", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 110.0, + 93.0, + 22.0 + ], + "text": "filechanged" + } + }, + { + "box": { + "id": "obj-25", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 140.0, + 226.0, + 22.0 + ], + "text": "script connect widen 1 added 0" + } + }, + { + "box": { + "id": "obj-26", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 170.0, + 44.0, + 22.0 + ], + "text": "bang" + } + }, + { + "box": { + "id": "obj-27", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 410.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-28", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 440.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-29", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 470.0, + 65.0, + 22.0 + ], + "text": "sel \"1\"" + } + }, + { + "box": { + "id": "obj-30", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 500.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-31", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 530.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-32", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 560.0, + 289.0, + 22.0 + ], + "text": "test.assert first-outlet-keeps-its-cord" + } + }, + { + "box": { + "id": "obj-33", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 590.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-34", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 620.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-35", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 650.0, + 65.0, + 22.0 + ], + "text": "sel \"2\"" + } + }, + { + "box": { + "id": "obj-36", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 680.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-37", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 710.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-38", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 740.0, + 310.0, + 22.0 + ], + "text": "test.assert added-outlet-carries-its-value" + } + }, + { + "box": { + "id": "obj-39", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 770.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-40", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 800.0, + 44.0, + 22.0 + ], + "text": "== 0" + } + }, + { + "box": { + "id": "obj-41", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 830.0, + 345.0, + 22.0 + ], + "text": "test.assert dumpout-cord-moved-with-the-dumpout" + } + }, + { + "box": { + "id": "obj-42", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 200.0, + 177.0, + 22.0 + ], + "text": "returns maxtest_widen 1" + } + }, + { + "box": { + "id": "obj-43", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 230.0, + 93.0, + 22.0 + ], + "text": "filechanged" + } + }, + { + "box": { + "id": "obj-44", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 260.0, + 44.0, + 22.0 + ], + "text": "bang" + } + }, + { + "box": { + "id": "obj-45", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 860.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-46", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 890.0, + 44.0, + 22.0 + ], + "text": "== 3" + } + }, + { + "box": { + "id": "obj-47", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 920.0, + 317.0, + 22.0 + ], + "text": "test.assert first-outlet-output-three-times" + } + }, + { + "box": { + "id": "obj-48", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 950.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-49", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 980.0, + 44.0, + 22.0 + ], + "text": "== 1" + } + }, + { + "box": { + "id": "obj-50", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1010.0, + 296.0, + 22.0 + ], + "text": "test.assert removed-outlet-took-its-cord" + } + }, + { + "box": { + "id": "obj-51", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 290.0, + 163.0, + 22.0 + ], + "text": "corrupt maxtest_widen" + } + }, + { + "box": { + "id": "obj-52", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 320.0, + 44.0, + 22.0 + ], + "text": "bang" + } + }, + { + "box": { + "id": "obj-53", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 140.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-54", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 170.0, + 44.0, + 22.0 + ], + "text": "== 1" + } + }, + { + "box": { + "id": "obj-55", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1040.0, + 275.0, + 22.0 + ], + "text": "test.assert broken-save-reported-once" + } + }, + { + "box": { + "id": "obj-56", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1070.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-57", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1100.0, + 44.0, + 22.0 + ], + "text": "== 3" + } + }, + { + "box": { + "id": "obj-58", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1130.0, + 254.0, + 22.0 + ], + "text": "test.assert broken-outputs-nothing" + } + }, + { + "box": { + "id": "obj-59", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 350.0, + 163.0, + 22.0 + ], + "text": "restore maxtest_widen" + } + }, + { + "box": { + "id": "obj-60", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 380.0, + 44.0, + 22.0 + ], + "text": "bang" + } + }, + { + "box": { + "id": "obj-61", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1160.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-62", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1190.0, + 44.0, + 22.0 + ], + "text": "== 4" + } + }, + { + "box": { + "id": "obj-63", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1220.0, + 233.0, + 22.0 + ], + "text": "test.assert fixed-outputs-again" + } + }, + { + "box": { + "id": "obj-64", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 200.0, + 156.0, + 22.0 + ], + "text": "regexp tap.python~?:" + } + }, + { + "box": { + "id": "obj-65", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 230.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-66", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 260.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-67", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 290.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-68", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 320.0, + 44.0, + 22.0 + ], + "text": "== 1" + } + }, + { + "box": { + "id": "obj-69", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 1250.0, + 247.0, + 22.0 + ], + "text": "test.assert nothing-else-reported" + } + }, + { + "box": { + "id": "obj-70", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], + "patching_rect": [ + 20.0, + 108.0, + 114.0, + 22.0 + ], + "text": "test.terminate" + } + }, + { + "box": { + "id": "obj-71", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 350.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-72", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 380.0, + 177.0, + 22.0 + ], + "text": "regexp \\\" @substitute '" + } + }, + { + "box": { + "id": "obj-73", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 410.0, + 86.0, + 22.0 + ], + "text": "fromsymbol" + } + }, + { + "box": { + "id": "obj-74", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 1020.0, + 440.0, + 51.0, + 22.0 + ], + "text": "t l b" + } + }, + { + "box": { + "id": "obj-75", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 470.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-76", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 500.0, + 51.0, + 22.0 + ], + "text": "<= 50" + } + }, + { + "box": { + "id": "obj-77", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 530.0, + 72.0, + 22.0 + ], + "text": "gate 1 1" + } + }, + { + "box": { + "id": "obj-78", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], + "patching_rect": [ + 1020.0, + 560.0, + 170.0, + 22.0 + ], + "text": "test.log console-error" + } + }, + { + "box": { + "id": "obj-79", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 138.0, + 72.0, + 22.0 + ], + "text": "loadbang" + } + }, + { + "box": { + "id": "obj-80", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 168.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-81", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 198.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-82", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 228.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-83", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 258.0, + 79.0, + 22.0 + ], + "text": "t b b b b" + } + }, + { + "box": { + "id": "obj-84", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 288.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-85", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 318.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-86", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 348.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-87", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 378.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-88", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 408.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-89", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 6, + "outlettype": [ + "", + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 438.0, + 107.0, + 22.0 + ], + "text": "t b b b b b b" + } + }, + { + "box": { + "id": "obj-90", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 468.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-91", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 498.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-92", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 528.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-93", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 558.0, + 79.0, + 22.0 + ], + "text": "t b b b b" + } + }, + { + "box": { + "id": "obj-94", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 588.0, + 86.0, + 22.0 + ], + "text": "delay 2500" + } + }, + { + "box": { + "id": "obj-95", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 618.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-96", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 648.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-97", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 678.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-98", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 708.0, + 86.0, + 22.0 + ], + "text": "delay 2500" + } + }, + { + "box": { + "id": "obj-99", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 738.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-100", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 768.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-101", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 798.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-102", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 828.0, + 79.0, + 22.0 + ], + "text": "delay 500" + } + }, + { + "box": { + "id": "obj-103", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 858.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + } + ], + "lines": [ + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-6", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-6", + 0 + ], + "destination": [ + "obj-7", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 1 + ], + "destination": [ + "obj-8", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-8", + 0 + ], + "destination": [ + "obj-9", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-4", + 0 + ], + "destination": [ + "obj-10", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-10", + 0 + ], + "destination": [ + "obj-11", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-12", + 0 + ], + "destination": [ + "obj-13", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-13", + 2 + ], + "destination": [ + "obj-14", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-14", + 0 + ], + "destination": [ + "obj-15", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-16", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-17", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-17", + 0 + ], + "destination": [ + "obj-18", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-18", + 0 + ], + "destination": [ + "obj-19", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-19", + 0 + ], + "destination": [ + "obj-20", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-19", + 1 + ], + "destination": [ + "obj-21", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-20", + 0 + ], + "destination": [ + "obj-22", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-21", + 0 + ], + "destination": [ + "obj-22", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-23", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-24", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-25", + 0 + ], + "destination": [ + "obj-5", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-26", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-27", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-27", + 0 + ], + "destination": [ + "obj-28", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-28", + 0 + ], + "destination": [ + "obj-29", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-29", + 0 + ], + "destination": [ + "obj-30", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-29", + 1 + ], + "destination": [ + "obj-31", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-30", + 0 + ], + "destination": [ + "obj-32", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-31", + 0 + ], + "destination": [ + "obj-32", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-4", + 0 + ], + "destination": [ + "obj-33", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-33", + 0 + ], + "destination": [ + "obj-34", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-34", + 0 + ], + "destination": [ + "obj-35", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-35", + 0 + ], + "destination": [ + "obj-36", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-35", + 1 + ], + "destination": [ + "obj-37", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-36", + 0 + ], + "destination": [ + "obj-38", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-37", + 0 + ], + "destination": [ + "obj-38", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-9", + 0 + ], + "destination": [ + "obj-39", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-39", + 0 + ], + "destination": [ + "obj-40", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-40", + 0 + ], + "destination": [ + "obj-41", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-42", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-43", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-44", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-7", + 0 + ], + "destination": [ + "obj-45", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-45", + 0 + ], + "destination": [ + "obj-46", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-46", + 0 + ], + "destination": [ + "obj-47", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-11", + 0 + ], + "destination": [ + "obj-48", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-48", + 0 + ], + "destination": [ + "obj-49", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-49", + 0 + ], + "destination": [ + "obj-50", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-51", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-52", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-15", + 0 + ], + "destination": [ + "obj-53", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-53", + 0 + ], + "destination": [ + "obj-54", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-54", + 0 + ], + "destination": [ + "obj-55", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-7", + 0 + ], + "destination": [ + "obj-56", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-56", + 0 + ], + "destination": [ + "obj-57", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-57", + 0 + ], + "destination": [ + "obj-58", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-59", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-60", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-7", + 0 + ], + "destination": [ + "obj-61", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-61", + 0 + ], + "destination": [ + "obj-62", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-62", + 0 + ], + "destination": [ + "obj-63", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-12", + 0 + ], + "destination": [ + "obj-64", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-64", + 2 + ], + "destination": [ + "obj-65", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-65", + 0 + ], + "destination": [ + "obj-66", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-66", + 0 + ], + "destination": [ + "obj-67", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-67", + 0 + ], + "destination": [ + "obj-68", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-68", + 0 + ], + "destination": [ + "obj-69", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-12", + 0 + ], + "destination": [ + "obj-71", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-71", + 0 + ], + "destination": [ + "obj-72", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-72", + 0 + ], + "destination": [ + "obj-73", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-72", + 3 + ], + "destination": [ + "obj-73", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-73", + 0 + ], + "destination": [ + "obj-74", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-74", + 1 + ], + "destination": [ + "obj-75", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-75", + 0 + ], + "destination": [ + "obj-76", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-76", + 0 + ], + "destination": [ + "obj-77", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-74", + 0 + ], + "destination": [ + "obj-77", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-77", + 0 + ], + "destination": [ + "obj-78", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-79", + 0 + ], + "destination": [ + "obj-80", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-80", + 0 + ], + "destination": [ + "obj-81", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-81", + 1 + ], + "destination": [ + "obj-16", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-81", + 0 + ], + "destination": [ + "obj-82", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-82", + 0 + ], + "destination": [ + "obj-83", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-83", + 3 + ], + "destination": [ + "obj-18", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-83", + 2 + ], + "destination": [ + "obj-23", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-83", + 1 + ], + "destination": [ + "obj-24", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-83", + 0 + ], + "destination": [ + "obj-84", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-84", + 0 + ], + "destination": [ + "obj-85", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-85", + 1 + ], + "destination": [ + "obj-25", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-85", + 0 + ], + "destination": [ + "obj-86", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-86", + 0 + ], + "destination": [ + "obj-87", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-87", + 1 + ], + "destination": [ + "obj-26", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-87", + 0 + ], + "destination": [ + "obj-88", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-88", + 0 + ], + "destination": [ + "obj-89", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-89", + 5 + ], + "destination": [ + "obj-28", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-89", + 4 + ], + "destination": [ + "obj-34", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-89", + 3 + ], + "destination": [ + "obj-39", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-89", + 2 + ], + "destination": [ + "obj-42", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-89", + 1 + ], + "destination": [ + "obj-43", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-89", + 0 + ], + "destination": [ + "obj-90", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-90", + 0 + ], + "destination": [ + "obj-91", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-91", + 1 + ], + "destination": [ + "obj-44", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-91", + 0 + ], + "destination": [ + "obj-92", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-92", + 0 + ], + "destination": [ + "obj-93", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-93", + 3 + ], + "destination": [ + "obj-45", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-93", + 2 + ], + "destination": [ + "obj-48", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-93", + 1 + ], + "destination": [ + "obj-51", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-93", + 0 + ], + "destination": [ + "obj-94", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-94", + 0 + ], + "destination": [ + "obj-95", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-95", + 2 + ], + "destination": [ + "obj-52", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-95", + 1 + ], + "destination": [ + "obj-53", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-95", + 0 + ], + "destination": [ + "obj-96", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-96", + 0 + ], + "destination": [ + "obj-97", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-97", + 2 + ], + "destination": [ + "obj-56", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-97", + 1 + ], + "destination": [ + "obj-59", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-97", + 0 + ], + "destination": [ + "obj-98", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-98", + 0 + ], + "destination": [ + "obj-99", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-99", + 1 + ], + "destination": [ + "obj-60", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-99", + 0 + ], + "destination": [ + "obj-100", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-100", + 0 + ], + "destination": [ + "obj-101", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-101", + 2 + ], + "destination": [ + "obj-61", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-101", + 1 + ], + "destination": [ + "obj-67", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-101", + 0 + ], + "destination": [ + "obj-102", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-102", + 0 + ], + "destination": [ + "obj-103", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-103", + 1 + ], + "destination": [ + "obj-70", + 0 + ] + } + } + ] + } +} diff --git a/runtime-tests/patchers/tap.python.shared.maxtest.maxpat b/runtime-tests/patchers/tap.python.shared.maxtest.maxpat new file mode 100644 index 0000000..1fb8610 --- /dev/null +++ b/runtime-tests/patchers/tap.python.shared.maxtest.maxpat @@ -0,0 +1,2682 @@ +{ + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 0, + "revision": 8, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "box", + "rect": [ + 60.0, + 80.0, + 1290, + 870.0 + ], + "default_fontsize": 12.0, + "default_fontname": "Arial", + "gridsize": [ + 15.0, + 15.0 + ], + "description": "tap.python.shared", + "boxes": [ + { + "box": { + "id": "obj-1", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ + 20.0, + 20.0, + 480, + 80.0 + ], + "text": "tap.python.shared\n\nOne file for a tap.python~ and a tap.python (plan 9.5): a save runs it once for both and both follow; each kind says once what it owes \u2014 mode is reserved by tap.python~ only, dumpout by tap.python only \u2014 on load and again after a change, whichever kind ran the file.", + "linecount": 4 + } + }, + { + "box": { + "id": "obj-2", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "signal" + ], + "patching_rect": [ + 520.0, + 20.0, + 72.0, + 22.0 + ], + "text": "sig~ 1.0" + } + }, + { + "box": { + "id": "obj-3", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "signal" + ], + "patching_rect": [ + 520.0, + 50.0, + 51.0, + 22.0 + ], + "text": "poly~" + } + }, + { + "box": { + "id": "obj-4", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 520.0, + 80.0, + 93.0, + 22.0 + ], + "text": "thispatcher" + } + }, + { + "box": { + "id": "obj-5", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "signal" + ], + "patching_rect": [ + 270.0, + 20.0, + 198.0, + 22.0 + ], + "text": "tap.python~ maxtest_editor" + } + }, + { + "box": { + "id": "obj-6", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 20.0, + 65.0, + 22.0 + ], + "text": "error 1" + } + }, + { + "box": { + "id": "obj-7", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 50.0, + 191.0, + 22.0 + ], + "text": "regexp mode.. is.reserved" + } + }, + { + "box": { + "id": "obj-8", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 80.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-9", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 110.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-10", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 140.0, + 212.0, + 22.0 + ], + "text": "regexp dumpout.. is.reserved" + } + }, + { + "box": { + "id": "obj-11", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 170.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-12", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 200.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-13", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 50.0, + 926.0, + 22.0 + ], + "text": "script newdefault control 600 400 tap.python maxtest_shared, script connect asked 0 control 0, script connect control 0 answered 0" + } + }, + { + "box": { + "id": "obj-14", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 80.0, + 51.0, + 22.0 + ], + "text": "value", + "varname": "asked" + } + }, + { + "box": { + "id": "obj-15", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 20.0, + 40.0, + 22.0 + ], + "text": "t l", + "varname": "answered" + } + }, + { + "box": { + "id": "obj-16", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 110.0, + 149.0, + 22.0 + ], + "text": "args maxtest_shared" + } + }, + { + "box": { + "id": "obj-17", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 140.0, + 72.0, + 22.0 + ], + "text": "voices 1" + } + }, + { + "box": { + "id": "obj-18", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 170.0, + 184.0, + 22.0 + ], + "text": "patchername maxtest.host" + } + }, + { + "box": { + "id": "obj-19", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 230.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-20", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 260.0, + 44.0, + 22.0 + ], + "text": "== 1" + } + }, + { + "box": { + "id": "obj-21", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 50.0, + 387.0, + 22.0 + ], + "text": "test.assert mode-reserved-said-by-the-audio-kind-only" + } + }, + { + "box": { + "id": "obj-22", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 290.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-23", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 320.0, + 44.0, + 22.0 + ], + "text": "== 1" + } + }, + { + "box": { + "id": "obj-24", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 80.0, + 422.0, + 22.0 + ], + "text": "test.assert dumpout-reserved-said-by-the-control-kind-only" + } + }, + { + "box": { + "id": "obj-25", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 110.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-26", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 140.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-27", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 170.0, + 100.0, + 22.0 + ], + "text": "sel \"1.0000\"" + } + }, + { + "box": { + "id": "obj-28", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 200.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-29", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 230.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-30", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 260.0, + 254.0, + 22.0 + ], + "text": "test.assert control-reads-the-file" + } + }, + { + "box": { + "id": "obj-31", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 200.0, + 177.0, + 22.0 + ], + "text": "scale maxtest_shared 2." + } + }, + { + "box": { + "id": "obj-32", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 230.0, + 93.0, + 22.0 + ], + "text": "filechanged" + } + }, + { + "box": { + "id": "obj-33", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 260.0, + 233.0, + 22.0 + ], + "text": "script send control filechanged" + } + }, + { + "box": { + "id": "obj-34", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 290.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-35", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 320.0, + 58.0, + 22.0 + ], + "text": "zl.reg" + } + }, + { + "box": { + "id": "obj-36", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 350.0, + 100.0, + 22.0 + ], + "text": "sel \"2.0000\"" + } + }, + { + "box": { + "id": "obj-37", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 380.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-38", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 410.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-39", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 440.0, + 268.0, + 22.0 + ], + "text": "test.assert control-follows-the-save" + } + }, + { + "box": { + "id": "obj-40", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 350.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-41", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 380.0, + 44.0, + 22.0 + ], + "text": "== 2" + } + }, + { + "box": { + "id": "obj-42", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 470.0, + 240.0, + 22.0 + ], + "text": "test.assert mode-said-again-once" + } + }, + { + "box": { + "id": "obj-43", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 410.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-44", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 440.0, + 44.0, + 22.0 + ], + "text": "== 2" + } + }, + { + "box": { + "id": "obj-45", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 500.0, + 261.0, + 22.0 + ], + "text": "test.assert dumpout-said-again-once" + } + }, + { + "box": { + "id": "obj-46", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 470.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-47", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 500.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-48", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 530.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-49", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 560.0, + 44.0, + 22.0 + ], + "text": "== 4" + } + }, + { + "box": { + "id": "obj-50", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 530.0, + 184.0, + 22.0 + ], + "text": "test.assert nothing-else" + } + }, + { + "box": { + "id": "obj-51", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], + "patching_rect": [ + 20.0, + 108.0, + 114.0, + 22.0 + ], + "text": "test.terminate" + } + }, + { + "box": { + "id": "obj-52", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 590.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-53", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 620.0, + 177.0, + 22.0 + ], + "text": "regexp \\\" @substitute '" + } + }, + { + "box": { + "id": "obj-54", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 650.0, + 86.0, + 22.0 + ], + "text": "fromsymbol" + } + }, + { + "box": { + "id": "obj-55", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 1020.0, + 680.0, + 51.0, + 22.0 + ], + "text": "t l b" + } + }, + { + "box": { + "id": "obj-56", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 710.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-57", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 740.0, + 51.0, + 22.0 + ], + "text": "<= 50" + } + }, + { + "box": { + "id": "obj-58", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 770.0, + 72.0, + 22.0 + ], + "text": "gate 1 1" + } + }, + { + "box": { + "id": "obj-59", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], + "patching_rect": [ + 1020.0, + 800.0, + 170.0, + 22.0 + ], + "text": "test.log console-error" + } + }, + { + "box": { + "id": "obj-60", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 138.0, + 72.0, + 22.0 + ], + "text": "loadbang" + } + }, + { + "box": { + "id": "obj-61", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 168.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-62", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 198.0, + 93.0, + 22.0 + ], + "text": "; dsp start" + } + }, + { + "box": { + "id": "obj-63", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 228.0, + 93.0, + 22.0 + ], + "text": "delay 60000" + } + }, + { + "box": { + "id": "obj-64", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 258.0, + 79.0, + 22.0 + ], + "text": "dspstate~" + } + }, + { + "box": { + "id": "obj-65", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 288.0, + 51.0, + 22.0 + ], + "text": "sel 1" + } + }, + { + "box": { + "id": "obj-66", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 318.0, + 79.0, + 22.0 + ], + "text": "onebang 1" + } + }, + { + "box": { + "id": "obj-67", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 348.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-68", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 560.0, + 191.0, + 22.0 + ], + "text": "test.assert audio-started" + } + }, + { + "box": { + "id": "obj-69", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 378.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-70", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 408.0, + 93.0, + 22.0 + ], + "text": "t b b b b b" + } + }, + { + "box": { + "id": "obj-71", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 438.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-72", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 468.0, + 79.0, + 22.0 + ], + "text": "t b b b b" + } + }, + { + "box": { + "id": "obj-73", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 498.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-74", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 528.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-75", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 558.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-76", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 588.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-77", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 618.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-78", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 648.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-79", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 678.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-80", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 708.0, + 93.0, + 22.0 + ], + "text": "t b b b b b" + } + }, + { + "box": { + "id": "obj-81", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 738.0, + 79.0, + 22.0 + ], + "text": "delay 500" + } + }, + { + "box": { + "id": "obj-82", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 768.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + } + ], + "lines": [ + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-6", + 0 + ], + "destination": [ + "obj-7", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-7", + 2 + ], + "destination": [ + "obj-8", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-8", + 0 + ], + "destination": [ + "obj-9", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-6", + 0 + ], + "destination": [ + "obj-10", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-10", + 2 + ], + "destination": [ + "obj-11", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-11", + 0 + ], + "destination": [ + "obj-12", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-13", + 0 + ], + "destination": [ + "obj-4", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-16", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-17", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-18", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-9", + 0 + ], + "destination": [ + "obj-19", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-19", + 0 + ], + "destination": [ + "obj-20", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-20", + 0 + ], + "destination": [ + "obj-21", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-12", + 0 + ], + "destination": [ + "obj-22", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-22", + 0 + ], + "destination": [ + "obj-23", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-23", + 0 + ], + "destination": [ + "obj-24", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-15", + 0 + ], + "destination": [ + "obj-25", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-25", + 0 + ], + "destination": [ + "obj-26", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-26", + 0 + ], + "destination": [ + "obj-27", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-27", + 0 + ], + "destination": [ + "obj-28", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-27", + 1 + ], + "destination": [ + "obj-29", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-28", + 0 + ], + "destination": [ + "obj-30", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-29", + 0 + ], + "destination": [ + "obj-30", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-31", + 0 + ], + "destination": [ + "obj-5", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-32", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-33", + 0 + ], + "destination": [ + "obj-4", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-15", + 0 + ], + "destination": [ + "obj-34", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-34", + 0 + ], + "destination": [ + "obj-35", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-35", + 0 + ], + "destination": [ + "obj-36", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-36", + 0 + ], + "destination": [ + "obj-37", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-36", + 1 + ], + "destination": [ + "obj-38", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-37", + 0 + ], + "destination": [ + "obj-39", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-38", + 0 + ], + "destination": [ + "obj-39", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-9", + 0 + ], + "destination": [ + "obj-40", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-40", + 0 + ], + "destination": [ + "obj-41", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-41", + 0 + ], + "destination": [ + "obj-42", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-12", + 0 + ], + "destination": [ + "obj-43", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-43", + 0 + ], + "destination": [ + "obj-44", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-44", + 0 + ], + "destination": [ + "obj-45", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-6", + 0 + ], + "destination": [ + "obj-46", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-46", + 0 + ], + "destination": [ + "obj-47", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-47", + 0 + ], + "destination": [ + "obj-48", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-48", + 0 + ], + "destination": [ + "obj-49", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-49", + 0 + ], + "destination": [ + "obj-50", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-6", + 0 + ], + "destination": [ + "obj-52", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-52", + 0 + ], + "destination": [ + "obj-53", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-53", + 0 + ], + "destination": [ + "obj-54", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-53", + 3 + ], + "destination": [ + "obj-54", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-54", + 0 + ], + "destination": [ + "obj-55", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-55", + 1 + ], + "destination": [ + "obj-56", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-56", + 0 + ], + "destination": [ + "obj-57", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-57", + 0 + ], + "destination": [ + "obj-58", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-55", + 0 + ], + "destination": [ + "obj-58", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-58", + 0 + ], + "destination": [ + "obj-59", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-60", + 0 + ], + "destination": [ + "obj-61", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-61", + 1 + ], + "destination": [ + "obj-63", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-61", + 0 + ], + "destination": [ + "obj-62", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-63", + 0 + ], + "destination": [ + "obj-51", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-64", + 0 + ], + "destination": [ + "obj-65", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-65", + 0 + ], + "destination": [ + "obj-66", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-66", + 0 + ], + "destination": [ + "obj-67", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-67", + 0 + ], + "destination": [ + "obj-68", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-66", + 0 + ], + "destination": [ + "obj-69", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-69", + 0 + ], + "destination": [ + "obj-70", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-70", + 4 + ], + "destination": [ + "obj-16", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-70", + 3 + ], + "destination": [ + "obj-17", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-70", + 2 + ], + "destination": [ + "obj-18", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-70", + 1 + ], + "destination": [ + "obj-13", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-70", + 0 + ], + "destination": [ + "obj-71", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-71", + 0 + ], + "destination": [ + "obj-72", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-72", + 3 + ], + "destination": [ + "obj-14", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-72", + 2 + ], + "destination": [ + "obj-19", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-72", + 1 + ], + "destination": [ + "obj-22", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-72", + 0 + ], + "destination": [ + "obj-73", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-73", + 0 + ], + "destination": [ + "obj-74", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-74", + 2 + ], + "destination": [ + "obj-26", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-74", + 1 + ], + "destination": [ + "obj-31", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-74", + 0 + ], + "destination": [ + "obj-75", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-75", + 0 + ], + "destination": [ + "obj-76", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-76", + 2 + ], + "destination": [ + "obj-32", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-76", + 1 + ], + "destination": [ + "obj-33", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-76", + 0 + ], + "destination": [ + "obj-77", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-77", + 0 + ], + "destination": [ + "obj-78", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-78", + 1 + ], + "destination": [ + "obj-14", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-78", + 0 + ], + "destination": [ + "obj-79", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-79", + 0 + ], + "destination": [ + "obj-80", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-80", + 4 + ], + "destination": [ + "obj-35", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-80", + 3 + ], + "destination": [ + "obj-40", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-80", + 2 + ], + "destination": [ + "obj-43", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-80", + 1 + ], + "destination": [ + "obj-48", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-80", + 0 + ], + "destination": [ + "obj-81", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-81", + 0 + ], + "destination": [ + "obj-82", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-82", + 1 + ], + "destination": [ + "obj-51", + 0 + ] + } + } + ] + } +} diff --git a/runtime-tests/patchers/tap.python.threads.maxtest.maxpat b/runtime-tests/patchers/tap.python.threads.maxtest.maxpat new file mode 100644 index 0000000..7fd80af --- /dev/null +++ b/runtime-tests/patchers/tap.python.threads.maxtest.maxpat @@ -0,0 +1,3067 @@ +{ + "patcher": { + "fileversion": 1, + "appversion": { + "major": 9, + "minor": 0, + "revision": 8, + "architecture": "x64", + "modernui": 1 + }, + "classnamespace": "box", + "rect": [ + 60.0, + 80.0, + 1290, + 900.0 + ], + "default_fontsize": 12.0, + "default_fontname": "Arial", + "gridsize": [ + 15.0, + 15.0 + ], + "description": "tap.python.threads", + "boxes": [ + { + "box": { + "id": "obj-1", + "maxclass": "comment", + "numinlets": 1, + "numoutlets": 0, + "patching_rect": [ + 20.0, + 20.0, + 480, + 80.0 + ], + "text": "tap.python.threads\n\ntap.python's messages on the thread they come on (plan 9.5): a metro's every 5 ms, through a counter, each output checked against its input \u2014 on the main thread (Overdrive off), the scheduler thread (Overdrive on), and the audio thread (Scheduler in Audio Interrupt on, audio running). Puts Overdrive and Audio Interrupt back as they were.", + "linecount": 4 + } + }, + { + "box": { + "id": "obj-2", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 520.0, + 20.0, + 177.0, + 22.0 + ], + "text": "tap.python maxtest_echo" + } + }, + { + "box": { + "id": "obj-3", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 20.0, + 65.0, + 22.0 + ], + "text": "metro 5" + } + }, + { + "box": { + "id": "obj-4", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 270.0, + 50.0, + 135.0, + 22.0 + ], + "text": "counter 0 1000000" + } + }, + { + "box": { + "id": "obj-5", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 270.0, + 80.0, + 51.0, + 22.0 + ], + "text": "t i i" + } + }, + { + "box": { + "id": "obj-6", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 20.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-7", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 50.0, + 40.0, + 22.0 + ], + "text": "!=" + } + }, + { + "box": { + "id": "obj-8", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 80.0, + 51.0, + 22.0 + ], + "text": "t i b" + } + }, + { + "box": { + "id": "obj-9", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 770.0, + 110.0, + 51.0, + 22.0 + ], + "text": "sel 1" + } + }, + { + "box": { + "id": "obj-10", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 140.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-11", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 770.0, + 170.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-12", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 200.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-13", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 770.0, + 230.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-14", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 1020.0, + 20.0, + 142.0, + 22.0 + ], + "text": "adstatus overdrive" + } + }, + { + "box": { + "id": "obj-15", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 50.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-16", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 80.0, + 72.0, + 22.0 + ], + "text": "gate 1 1" + } + }, + { + "box": { + "id": "obj-17", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 110.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-18", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 1020.0, + 140.0, + 135.0, + 22.0 + ], + "text": "adstatus takeover" + } + }, + { + "box": { + "id": "obj-19", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 170.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-20", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 200.0, + 72.0, + 22.0 + ], + "text": "gate 1 1" + } + }, + { + "box": { + "id": "obj-21", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 230.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-22", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 110.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-23", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 140.0, + 40.0, + 22.0 + ], + "text": "0" + } + }, + { + "box": { + "id": "obj-24", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 170.0, + 233.0, + 22.0 + ], + "text": "; max preempt 0; dsp takeover 0" + } + }, + { + "box": { + "id": "obj-25", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 260.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-26", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 290.0, + 44.0, + 22.0 + ], + "text": "== 0" + } + }, + { + "box": { + "id": "obj-27", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 320.0, + 240.0, + 22.0 + ], + "text": "test.assert main-thread-in-order" + } + }, + { + "box": { + "id": "obj-28", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 350.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-29", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 380.0, + 51.0, + 22.0 + ], + "text": ">= 50" + } + }, + { + "box": { + "id": "obj-30", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 410.0, + 233.0, + 22.0 + ], + "text": "test.assert main-thread-outputs" + } + }, + { + "box": { + "id": "obj-31", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 200.0, + 121.0, + 22.0 + ], + "text": "; max preempt 1" + } + }, + { + "box": { + "id": "obj-32", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 440.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-33", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 470.0, + 44.0, + 22.0 + ], + "text": "== 0" + } + }, + { + "box": { + "id": "obj-34", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 500.0, + 275.0, + 22.0 + ], + "text": "test.assert scheduler-thread-in-order" + } + }, + { + "box": { + "id": "obj-35", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 530.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-36", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 560.0, + 58.0, + 22.0 + ], + "text": ">= 100" + } + }, + { + "box": { + "id": "obj-37", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 590.0, + 268.0, + 22.0 + ], + "text": "test.assert scheduler-thread-outputs" + } + }, + { + "box": { + "id": "obj-38", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 270.0, + 230.0, + 128.0, + 22.0 + ], + "text": "; dsp takeover 1" + } + }, + { + "box": { + "id": "obj-39", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 620.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-40", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 650.0, + 44.0, + 22.0 + ], + "text": "== 0" + } + }, + { + "box": { + "id": "obj-41", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 680.0, + 247.0, + 22.0 + ], + "text": "test.assert audio-thread-in-order" + } + }, + { + "box": { + "id": "obj-42", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 710.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-43", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 740.0, + 58.0, + 22.0 + ], + "text": ">= 150" + } + }, + { + "box": { + "id": "obj-44", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 770.0, + 240.0, + 22.0 + ], + "text": "test.assert audio-thread-outputs" + } + }, + { + "box": { + "id": "obj-45", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 260.0, + 65.0, + 22.0 + ], + "text": "error 1" + } + }, + { + "box": { + "id": "obj-46", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 290.0, + 40.0, + 22.0 + ], + "text": "t b" + } + }, + { + "box": { + "id": "obj-47", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 320.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-48", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 350.0, + 40.0, + 22.0 + ], + "text": "i" + } + }, + { + "box": { + "id": "obj-49", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 380.0, + 44.0, + 22.0 + ], + "text": "== 0" + } + }, + { + "box": { + "id": "obj-50", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 800.0, + 191.0, + 22.0 + ], + "text": "test.assert console-clean" + } + }, + { + "box": { + "id": "obj-51", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], + "patching_rect": [ + 20.0, + 108.0, + 114.0, + 22.0 + ], + "text": "test.terminate" + } + }, + { + "box": { + "id": "obj-52", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 410.0, + 72.0, + 22.0 + ], + "text": "tosymbol" + } + }, + { + "box": { + "id": "obj-53", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 5, + "outlettype": [ + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 440.0, + 177.0, + 22.0 + ], + "text": "regexp \\\" @substitute '" + } + }, + { + "box": { + "id": "obj-54", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 470.0, + 86.0, + 22.0 + ], + "text": "fromsymbol" + } + }, + { + "box": { + "id": "obj-55", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 1020.0, + 500.0, + 51.0, + 22.0 + ], + "text": "t l b" + } + }, + { + "box": { + "id": "obj-56", + "maxclass": "newobj", + "numinlets": 3, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 1020.0, + 530.0, + 135.0, + 22.0 + ], + "text": "counter 1 1000000" + } + }, + { + "box": { + "id": "obj-57", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 560.0, + 51.0, + 22.0 + ], + "text": "<= 50" + } + }, + { + "box": { + "id": "obj-58", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 1020.0, + 590.0, + 72.0, + 22.0 + ], + "text": "gate 1 1" + } + }, + { + "box": { + "id": "obj-59", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 0, + "outlettype": [], + "patching_rect": [ + 1020.0, + 620.0, + 170.0, + 22.0 + ], + "text": "test.log console-error" + } + }, + { + "box": { + "id": "obj-60", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 138.0, + 72.0, + 22.0 + ], + "text": "loadbang" + } + }, + { + "box": { + "id": "obj-61", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 168.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-62", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 198.0, + 93.0, + 22.0 + ], + "text": "; dsp start" + } + }, + { + "box": { + "id": "obj-63", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 228.0, + 93.0, + 22.0 + ], + "text": "delay 60000" + } + }, + { + "box": { + "id": "obj-64", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 258.0, + 79.0, + 22.0 + ], + "text": "dspstate~" + } + }, + { + "box": { + "id": "obj-65", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 288.0, + 51.0, + 22.0 + ], + "text": "sel 1" + } + }, + { + "box": { + "id": "obj-66", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 318.0, + 79.0, + 22.0 + ], + "text": "onebang 1" + } + }, + { + "box": { + "id": "obj-67", + "maxclass": "message", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 348.0, + 40.0, + 22.0 + ], + "text": "1" + } + }, + { + "box": { + "id": "obj-68", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 770.0, + 830.0, + 191.0, + 22.0 + ], + "text": "test.assert audio-started" + } + }, + { + "box": { + "id": "obj-69", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 378.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-70", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 3, + "outlettype": [ + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 408.0, + 65.0, + 22.0 + ], + "text": "t b b b" + } + }, + { + "box": { + "id": "obj-71", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 438.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-72", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 468.0, + 79.0, + 22.0 + ], + "text": "t b b b b" + } + }, + { + "box": { + "id": "obj-73", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 498.0, + 79.0, + 22.0 + ], + "text": "delay 300" + } + }, + { + "box": { + "id": "obj-74", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 528.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-75", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 558.0, + 86.0, + 22.0 + ], + "text": "delay 1000" + } + }, + { + "box": { + "id": "obj-76", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 588.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-77", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 618.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-78", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 648.0, + 79.0, + 22.0 + ], + "text": "t b b b b" + } + }, + { + "box": { + "id": "obj-79", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 678.0, + 79.0, + 22.0 + ], + "text": "delay 300" + } + }, + { + "box": { + "id": "obj-80", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 708.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-81", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 738.0, + 86.0, + 22.0 + ], + "text": "delay 1000" + } + }, + { + "box": { + "id": "obj-82", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 768.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-83", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 798.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-84", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 4, + "outlettype": [ + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 828.0, + 79.0, + 22.0 + ], + "text": "t b b b b" + } + }, + { + "box": { + "id": "obj-85", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 858.0, + 86.0, + 22.0 + ], + "text": "delay 1500" + } + }, + { + "box": { + "id": "obj-86", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 888.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-87", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 918.0, + 86.0, + 22.0 + ], + "text": "delay 1000" + } + }, + { + "box": { + "id": "obj-88", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 948.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + }, + { + "box": { + "id": "obj-89", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 978.0, + 79.0, + 22.0 + ], + "text": "delay 150" + } + }, + { + "box": { + "id": "obj-90", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 6, + "outlettype": [ + "", + "", + "", + "", + "", + "" + ], + "patching_rect": [ + 20.0, + 1008.0, + 107.0, + 22.0 + ], + "text": "t b b b b b b" + } + }, + { + "box": { + "id": "obj-91", + "maxclass": "newobj", + "numinlets": 2, + "numoutlets": 1, + "outlettype": [ + "" + ], + "patching_rect": [ + 20.0, + 1038.0, + 79.0, + 22.0 + ], + "text": "delay 500" + } + }, + { + "box": { + "id": "obj-92", + "maxclass": "newobj", + "numinlets": 1, + "numoutlets": 2, + "outlettype": [ + "", + "" + ], + "patching_rect": [ + 20.0, + 1068.0, + 51.0, + 22.0 + ], + "text": "t b b" + } + } + ], + "lines": [ + { + "patchline": { + "source": [ + "obj-3", + 0 + ], + "destination": [ + "obj-4", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-4", + 0 + ], + "destination": [ + "obj-5", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-5", + 1 + ], + "destination": [ + "obj-6", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-5", + 0 + ], + "destination": [ + "obj-2", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-6", + 0 + ], + "destination": [ + "obj-7", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-8", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-8", + 1 + ], + "destination": [ + "obj-6", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-8", + 0 + ], + "destination": [ + "obj-7", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-7", + 0 + ], + "destination": [ + "obj-9", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-9", + 0 + ], + "destination": [ + "obj-10", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-10", + 0 + ], + "destination": [ + "obj-11", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-2", + 0 + ], + "destination": [ + "obj-12", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-12", + 0 + ], + "destination": [ + "obj-13", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-14", + 1 + ], + "destination": [ + "obj-16", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-16", + 0 + ], + "destination": [ + "obj-15", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-15", + 0 + ], + "destination": [ + "obj-14", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-17", + 0 + ], + "destination": [ + "obj-16", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-18", + 1 + ], + "destination": [ + "obj-20", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-20", + 0 + ], + "destination": [ + "obj-19", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-19", + 0 + ], + "destination": [ + "obj-18", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-21", + 0 + ], + "destination": [ + "obj-20", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-22", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-23", + 0 + ], + "destination": [ + "obj-3", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-11", + 0 + ], + "destination": [ + "obj-25", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-25", + 0 + ], + "destination": [ + "obj-26", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-26", + 0 + ], + "destination": [ + "obj-27", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-13", + 0 + ], + "destination": [ + "obj-28", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-28", + 0 + ], + "destination": [ + "obj-29", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-29", + 0 + ], + "destination": [ + "obj-30", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-11", + 0 + ], + "destination": [ + "obj-32", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-32", + 0 + ], + "destination": [ + "obj-33", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-33", + 0 + ], + "destination": [ + "obj-34", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-13", + 0 + ], + "destination": [ + "obj-35", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-35", + 0 + ], + "destination": [ + "obj-36", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-36", + 0 + ], + "destination": [ + "obj-37", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-11", + 0 + ], + "destination": [ + "obj-39", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-39", + 0 + ], + "destination": [ + "obj-40", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-40", + 0 + ], + "destination": [ + "obj-41", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-13", + 0 + ], + "destination": [ + "obj-42", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-42", + 0 + ], + "destination": [ + "obj-43", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-43", + 0 + ], + "destination": [ + "obj-44", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-45", + 0 + ], + "destination": [ + "obj-46", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-46", + 0 + ], + "destination": [ + "obj-47", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-47", + 0 + ], + "destination": [ + "obj-48", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-48", + 0 + ], + "destination": [ + "obj-49", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-49", + 0 + ], + "destination": [ + "obj-50", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-45", + 0 + ], + "destination": [ + "obj-52", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-52", + 0 + ], + "destination": [ + "obj-53", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-53", + 0 + ], + "destination": [ + "obj-54", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-53", + 3 + ], + "destination": [ + "obj-54", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-54", + 0 + ], + "destination": [ + "obj-55", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-55", + 1 + ], + "destination": [ + "obj-56", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-56", + 0 + ], + "destination": [ + "obj-57", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-57", + 0 + ], + "destination": [ + "obj-58", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-55", + 0 + ], + "destination": [ + "obj-58", + 1 + ] + } + }, + { + "patchline": { + "source": [ + "obj-58", + 0 + ], + "destination": [ + "obj-59", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-60", + 0 + ], + "destination": [ + "obj-61", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-61", + 1 + ], + "destination": [ + "obj-63", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-61", + 0 + ], + "destination": [ + "obj-62", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-63", + 0 + ], + "destination": [ + "obj-51", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-64", + 0 + ], + "destination": [ + "obj-65", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-65", + 0 + ], + "destination": [ + "obj-66", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-66", + 0 + ], + "destination": [ + "obj-67", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-67", + 0 + ], + "destination": [ + "obj-68", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-66", + 0 + ], + "destination": [ + "obj-69", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-69", + 0 + ], + "destination": [ + "obj-70", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-70", + 2 + ], + "destination": [ + "obj-14", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-70", + 1 + ], + "destination": [ + "obj-18", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-70", + 0 + ], + "destination": [ + "obj-71", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-71", + 0 + ], + "destination": [ + "obj-72", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-72", + 3 + ], + "destination": [ + "obj-17", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-72", + 2 + ], + "destination": [ + "obj-21", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-72", + 1 + ], + "destination": [ + "obj-24", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-72", + 0 + ], + "destination": [ + "obj-73", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-73", + 0 + ], + "destination": [ + "obj-74", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-74", + 1 + ], + "destination": [ + "obj-22", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-74", + 0 + ], + "destination": [ + "obj-75", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-75", + 0 + ], + "destination": [ + "obj-76", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-76", + 1 + ], + "destination": [ + "obj-23", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-76", + 0 + ], + "destination": [ + "obj-77", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-77", + 0 + ], + "destination": [ + "obj-78", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-78", + 3 + ], + "destination": [ + "obj-25", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-78", + 2 + ], + "destination": [ + "obj-28", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-78", + 1 + ], + "destination": [ + "obj-31", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-78", + 0 + ], + "destination": [ + "obj-79", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-79", + 0 + ], + "destination": [ + "obj-80", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-80", + 1 + ], + "destination": [ + "obj-22", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-80", + 0 + ], + "destination": [ + "obj-81", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-81", + 0 + ], + "destination": [ + "obj-82", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-82", + 1 + ], + "destination": [ + "obj-23", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-82", + 0 + ], + "destination": [ + "obj-83", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-83", + 0 + ], + "destination": [ + "obj-84", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-84", + 3 + ], + "destination": [ + "obj-32", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-84", + 2 + ], + "destination": [ + "obj-35", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-84", + 1 + ], + "destination": [ + "obj-38", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-84", + 0 + ], + "destination": [ + "obj-85", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-85", + 0 + ], + "destination": [ + "obj-86", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-86", + 1 + ], + "destination": [ + "obj-22", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-86", + 0 + ], + "destination": [ + "obj-87", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-87", + 0 + ], + "destination": [ + "obj-88", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-88", + 1 + ], + "destination": [ + "obj-23", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-88", + 0 + ], + "destination": [ + "obj-89", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-89", + 0 + ], + "destination": [ + "obj-90", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-90", + 5 + ], + "destination": [ + "obj-39", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-90", + 4 + ], + "destination": [ + "obj-42", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-90", + 3 + ], + "destination": [ + "obj-15", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-90", + 2 + ], + "destination": [ + "obj-19", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-90", + 1 + ], + "destination": [ + "obj-48", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-90", + 0 + ], + "destination": [ + "obj-91", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-91", + 0 + ], + "destination": [ + "obj-92", + 0 + ] + } + }, + { + "patchline": { + "source": [ + "obj-92", + 1 + ], + "destination": [ + "obj-51", + 0 + ] + } + } + ] + } +} diff --git a/runtime-tests/python/maxtest_control_faults.py b/runtime-tests/python/maxtest_control_faults.py new file mode 100644 index 0000000..2b8ee0f --- /dev/null +++ b/runtime-tests/python/maxtest_control_faults.py @@ -0,0 +1,14 @@ +# Runtime-test fixture (runtime-tests/run.py copies it into python/): what tap.python reports and +# survives — sys.exit() is reported, not obeyed; an exception prints its traceback; neither outputs. +import sys + + +class maxtest_control_faults: + def leave(self) -> int: + sys.exit(3) + + def fail(self) -> int: + raise ValueError("maxtest_control_faults failed on purpose") + + def ok(self) -> int: + return 1 diff --git a/runtime-tests/python/maxtest_echo.py b/runtime-tests/python/maxtest_echo.py new file mode 100644 index 0000000..20686ce --- /dev/null +++ b/runtime-tests/python/maxtest_echo.py @@ -0,0 +1,7 @@ +# Runtime-test fixture (runtime-tests/run.py copies it into python/): for tap.python, returns what it is +# given — so a patch can check every output against its input, on whatever thread the message came. + + +class maxtest_echo: + def int(self, n: int) -> int: + return n diff --git a/runtime-tests/python/maxtest_editor.py b/runtime-tests/python/maxtest_editor.py index f09799f..98b74c8 100644 --- a/runtime-tests/python/maxtest_editor.py +++ b/runtime-tests/python/maxtest_editor.py @@ -34,6 +34,14 @@ def reshape(self, name: str, inputs: int, outputs: int) -> None: source = f"class {name}:\n def process(self{parameters}) -> {returns}:\n return {result}\n" self._file(name).write_text(source, encoding="utf-8") + def returns(self, name: str, count: int) -> None: + """Save the file as a tap.python class whose bang returns `count` values, 1 to count, hinted + tuple[int, ...] of that many when more than one: the object's value outlets follow (plan 9.5).""" + values = ", ".join(str(n + 1) for n in range(count)) + hint = "int" if count == 1 else "tuple[" + ", ".join(["int"] * count) + "]" + source = f"class {name}:\n def bang(self) -> {hint}:\n return {values}\n" + self._file(name).write_text(source, encoding="utf-8") + def remove_field(self, name: str, field: str) -> None: path = self._file(name) source = re.sub(rf"^\s+{field}: .*\n", "", path.read_text(encoding="utf-8"), count=1, flags=re.M) diff --git a/runtime-tests/python/maxtest_forward.py b/runtime-tests/python/maxtest_forward.py new file mode 100644 index 0000000..162da26 --- /dev/null +++ b/runtime-tests/python/maxtest_forward.py @@ -0,0 +1,13 @@ +# Runtime-test fixture (runtime-tests/run.py copies it into python/): a tap.python class with an +# attribute, a method and an anything method — the forwarder's order, and attributes still set and +# read on a class that has anything. + + +class maxtest_forward: + steps: int = 8 + + def hello(self, n: int) -> int: + return n + 1 + + def anything(self, selector: str, *args) -> list: + return [selector, *args] diff --git a/runtime-tests/python/maxtest_outputs.py b/runtime-tests/python/maxtest_outputs.py new file mode 100644 index 0000000..ff909e9 --- /dev/null +++ b/runtime-tests/python/maxtest_outputs.py @@ -0,0 +1,60 @@ +# Runtime-test fixture (runtime-tests/run.py copies it into python/): for tap.python, one method per row +# of the output table (docs/TAP-PYTHON-PLAN.md; the ReadMe's "Objects without audio"). spread() and +# partial() are hinted tuple[str, int], so the object has two value outlets. +import numpy as np + + +class maxtest_outputs: + def nothing(self) -> None: + return None + + def yes(self) -> bool: + return True + + def numpy_no(self): + return np.bool_(False) + + def integer(self) -> int: + return 42 + + def big(self) -> int: + return 2 ** 70 # past 64 bits: reported, nothing output + + def real(self) -> float: + return 0.5 + + def text(self) -> str: + return "hello world" + + def word(self) -> str: + return "bang" # a str is symbol , never the message it names + + def numbers(self) -> list: + return [1, 2.5, 3] + + def message(self) -> list: + return ["note", 60, 100] + + def pair(self): + return (7, 8) # a tuple from a method not hinted to return one: a list + + def array(self) -> np.ndarray: + return np.array([1.0, 2.0]) + + def scalar(self): + return np.float64(0.25) + + def empty(self) -> list: + return [] + + def mapping(self): + return {"a": 1} # reported, nothing output + + def nested(self): + return [1, [2]] # reported, nothing output + + def spread(self) -> tuple[str, int]: + return "left", 9 + + def partial(self) -> tuple[str, int]: + return None, 5 # nothing from the first outlet diff --git a/runtime-tests/python/maxtest_shared.py b/runtime-tests/python/maxtest_shared.py new file mode 100644 index 0000000..16b9689 --- /dev/null +++ b/runtime-tests/python/maxtest_shared.py @@ -0,0 +1,20 @@ +# Runtime-test fixture (runtime-tests/run.py copies it into python/): one file for a tap.python~ and a +# tap.python at once. maxtest_editor bumps REVISION (one execution of the file for both) and scales +# SCALE. Its methods mode and dumpout are each reserved by one kind of object and not the other — mode +# by tap.python~, dumpout by tap.python — so each kind says once what it owes, whichever ran the file. +REVISION = 0 +SCALE = 1.0 + + +class maxtest_shared: + def process(self, x: float) -> float: + return x * SCALE + + def value(self) -> float: + return SCALE + + def mode(self) -> None: + pass + + def dumpout(self) -> None: + pass diff --git a/runtime-tests/python/maxtest_soak_control.py b/runtime-tests/python/maxtest_soak_control.py new file mode 100644 index 0000000..da3ffbb --- /dev/null +++ b/runtime-tests/python/maxtest_soak_control.py @@ -0,0 +1,8 @@ +# Runtime-test fixture (runtime-tests/run.py copies it into python/): the soak's tap.python (plan 9.5), +# answering a metro while maxtest_editor bumps REVISION every second. +REVISION = 0 + + +class maxtest_soak_control: + def int(self, n: int) -> int: + return n diff --git a/runtime-tests/python/maxtest_widen.py b/runtime-tests/python/maxtest_widen.py new file mode 100644 index 0000000..b806129 --- /dev/null +++ b/runtime-tests/python/maxtest_widen.py @@ -0,0 +1,7 @@ +# Runtime-test fixture (runtime-tests/run.py copies it into python/): maxtest_editor rewrites it with +# returns(), so that its method's return hint names one value or several — the object's outlets follow. + + +class maxtest_widen: + def bang(self) -> int: + return 1 diff --git a/runtime-tests/run.py b/runtime-tests/run.py index 0b680d7..bf18c16 100644 --- a/runtime-tests/run.py +++ b/runtime-tests/run.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # SPDX-License-Identifier: MIT # Copyright 2022-2026 Timothy Place. -"""Run tap.python~'s runtime tests inside a real Max (plan 6.1, 6.4). +"""Run PythonTap's runtime tests inside a real Max (plan 6.1, 6.4; tap.python's, 9.5). python3 runtime-tests/run.py # everything: both sessions below python3 runtime-tests/run.py --session main # just the tests with the runtime installed @@ -26,6 +26,11 @@ perf (only when asked for) Max's own DSP CPU meter with instances of the shipped examples, averaged into logs/perf.json (scripts/update-perf-docs.py --max). +For the run Max's "Restore Windows on Launch" is off and its crash-recovery workspaces are moved +aside to logs/ — a window Max reopened would load tap.python~'s binary before the first test, which +must find tap.python through the package's init/ mapping (plan 9.0) — and its preference files are put +back as they were afterwards. tap.python's load test is the first patcher the main session opens. + It installs the harness into Packages as max-test (a copy: Max loads extensions only from a real folder; it stays installed), links runtime-tests/ in as PythonTap-runtime-tests for the run, and copies the fixtures in runtime-tests/python/ into python/, where tap.python~ looks for class files; @@ -58,8 +63,13 @@ SUPPORT = PACKAGE / "support" SUPPORT_ASIDE = PACKAGE / "support.maxtest-aside" EXTERNAL = PACKAGE / "externals" / "tap.python~.mxo" -# The reference page min rewrites from the object's descriptions (plan 6.8) +# The reference page min rewrites from the object's descriptions (plan 6.8); tap.python's is written +# by hand (plan 9.4), and nothing should ever rewrite it REFPAGE = ROOT / "docs" / "tap.python~.maxref.xml" +HAND_REFPAGE = ROOT / "docs" / "tap.python.maxref.xml" +# Max finds tap.python, and mc.tap.python~, only through these lines (plans 9.0 and 9.4) +INIT = "init/tap.python.txt" +INIT_LINES = ["max objectfile tap.python tap.python~;", "max objectfile mc.tap.python~ mc.wrapper~ tap.python~;"] OSCAR = HARNESS / "extensions" / "oscar.mxo" # Must match misc/max-test-config.json: Max listens on one port and sends to the other. @@ -71,6 +81,14 @@ TEST_PACKAGE = "PythonTap-runtime-tests" HARNESS_STAMP = "INSTALLED-BY-PYTHONTAP.txt" +# Max's own files: its preferences (put back after the run) and the workspaces it reopens at launch +MAX9 = Path.home() / "Library" / "Application Support" / "Cycling '74" / "Max 9" +SETTINGS = MAX9 / "Settings" +CRASH_RECOVERY = MAX9 / "Crash Recovery" +PREFERENCES = ["maxpreferences.maxpref", "audioprefs.txt", "Core Audio@.txt", "recentitems.txt"] +# The first patcher the main session opens: Max must find tap.python through init/, in a fresh Max +FIRST = "tap.python.load.maxtest.maxpat" + # The without-runtime patchers are not named *.maxtest.maxpat, so that the harness's own "run # everything" never picks them up in a session that has a runtime. WITHOUT_RUNTIME = ["tap.python~.without-runtime.maxpat", "tap.python~.without-runtime-restart.maxpat"] @@ -379,6 +397,11 @@ def check_prerequisites(max_app: Path, packages: Path) -> None: raise RunError(f"another tap.python~ is installed, which Max could load instead: {others[0]}") if not (HARNESS / "source").is_dir(): raise RunError("the max-test submodule is missing — git submodule update --init --recursive") + init = PACKAGE / INIT + said = init.read_text(encoding="utf-8").splitlines() if init.exists() else [] + missing = [line for line in INIT_LINES if line not in said] + if missing: + raise RunError(f"{init} does not map {missing[0]!r} — Max would not find the object") def build_oscar() -> None: @@ -434,6 +457,35 @@ def copy_fixtures() -> list[Path]: return copied +def back_up_preferences() -> Path: + """Copy Max's preference files aside (restore_preferences() puts them back), then turn off + Restore Windows on Launch for the run, and move aside the workspaces Max would reopen at launch + (kept in logs/): a window reopened at launch would load the binary before the first test.""" + backup = LOGS / "preferences-before" + shutil.rmtree(backup, ignore_errors=True) + backup.mkdir(parents=True) + for name in PREFERENCES: + if (SETTINGS / name).exists(): + shutil.copy2(SETTINGS / name, backup / name) + preferences = SETTINGS / "maxpreferences.maxpref" + if preferences.exists(): + document = json.loads(preferences.read_text()) + if document.get("preferences", {}).get("restorewindows"): + document["preferences"]["restorewindows"] = 0 + preferences.write_text(json.dumps(document, indent=4) + "\n") + aside = LOGS / "crash-recovery" + for workspace in CRASH_RECOVERY.glob("maxworkspace-*.txt"): + aside.mkdir(parents=True, exist_ok=True) + shutil.move(str(workspace), str(aside / workspace.name)) + return backup + + +def restore_preferences(backup: Path) -> None: + for name in PREFERENCES: + if (backup / name).exists(): + shutil.copy2(backup / name, SETTINGS / name) + + def restore_support() -> None: if SUPPORT_ASIDE.exists(): if SUPPORT.exists(): @@ -514,13 +566,16 @@ def main() -> int: main_tests = sorted(p.name for p in PATCHERS.glob("*.maxtest.maxpat")) if args.only: main_tests = [t for t in main_tests if any(o in t for o in args.only)] + main_tests.sort(key=lambda name: name != FIRST) # stable: the rest stay in order link: Path | None = None fixtures: list[Path] = [] failures: list[str] = [] + preferences: Path | None = None try: restore_support() # a previous run that was killed may have left it aside check_prerequisites(args.max, args.packages) + preferences = back_up_preferences() build_oscar() install_harness(args.packages) link = link_test_package(args.packages) @@ -557,12 +612,17 @@ def main() -> int: fixture.unlink(missing_ok=True) if link and not args.keep_link: link.unlink(missing_ok=True) + if preferences: + restore_preferences(preferences) print() if PACKAGE == ROOT and REFPAGE.exists() and subprocess.run( ["git", "-C", str(ROOT), "diff", "--quiet", "--", str(REFPAGE)]).returncode == 1: # min rewrites it when Max loads an external newer than it (plan 6.8) print(f"Max rewrote {REFPAGE.relative_to(ROOT)} from the object's descriptions: review and commit it.") + if PACKAGE == ROOT and HAND_REFPAGE.exists() and subprocess.run( + ["git", "-C", str(ROOT), "diff", "--quiet", "--", str(HAND_REFPAGE)]).returncode == 1: + print(f"{HAND_REFPAGE.relative_to(ROOT)} changed during the run, but it is written by hand: look at why.") if failures: print(f"{len(failures)} failure(s):") for failure in failures: