diff --git a/docs/PRODUCTION-PLAN.md b/docs/PRODUCTION-PLAN.md index 094cca6..313cec8 100644 --- a/docs/PRODUCTION-PLAN.md +++ b/docs/PRODUCTION-PLAN.md @@ -432,9 +432,13 @@ passed; a third ran the soak (6.2) and measured performance (6.3). To continue: and `run.py` says when Max has rewritten the page, to commit it. Max's page matches the committed one but for the description, which predated 2.4's text — now committed. The start-up lines are not this object's: they still appear while its page is written. -- [ ] **6.9 The help patcher and `numpy_allpass.py`** — the help patcher points to the `numpy_gain` +- [x] **6.9 The help patcher and `numpy_allpass.py`** — the help patcher points to the `numpy_gain` and `allpass` examples but not to `numpy_allpass`, the one that shows what the block path is for; - add it in Max (and re-save), perhaps with the measured comparison. + add it in Max (and re-save), perhaps with the measured comparison. *Done:* the examples note names + `numpy_allpass` as the same filter per vector, to swap in and watch the patcher's CPU meter (the + ReadMe's tables are the measured comparison); and a new note says what 2.4 made true — + `process()`'s parameters are the inlets, its return hint the outlets, `stereo_width` has two of + each, and a save that changes them changes the object. Checked open in Max 9.1.5. - [x] **6.10 One traceback per broken save** — a file that fails to load is not cached, so every object sharing it runs it and prints the traceback: 25 objects, 25 tracebacks. 6.7 left this alone, because the obvious fix — remember the failing source and stay quiet — would also hide diff --git a/help/tap.python~.maxhelp b/help/tap.python~.maxhelp index 411d714..41e1fcf 100644 --- a/help/tap.python~.maxhelp +++ b/help/tap.python~.maxhelp @@ -10,7 +10,7 @@ } , "classnamespace" : "box", - "rect" : [ 100.0, 100.0, 780.0, 600.0 ], + "rect" : [ 100.0, 100.0, 780.0, 650.0 ], "bglocked" : 0, "openinpresentation" : 0, "default_fontsize" : 13.0, @@ -351,17 +351,30 @@ "text" : "forces a reload; saving the file does it for you" } + } +, { + "box" : { + "fontsize" : 13.0, + "id" : "obj-41", + "linecount" : 4, + "maxclass" : "comment", + "numinlets" : 1, + "numoutlets" : 0, + "patching_rect" : [ 270.0, 510.0, 300.0, 76.0 ], + "text" : "process()'s parameters are the object's signal inlets and its return hint its outlets: [tap.python~ stereo_width] has two of each. A save that changes them changes the object's inlets and outlets." + } + } , { "box" : { "fontsize" : 13.0, "id" : "obj-37", - "linecount" : 6, + "linecount" : 9, "maxclass" : "comment", "numinlets" : 1, "numoutlets" : 0, - "patching_rect" : [ 20.0, 450.0, 235.0, 122.0 ], - "text" : "More examples in the python folder: [tap.python~ numpy_gain] processes a whole signal vector per call with numpy, the form to use when it has to run in real time; [tap.python~ allpass] is an allpass filter that sizes its delay line in prepare()." + "patching_rect" : [ 20.0, 450.0, 235.0, 180.0 ], + "text" : "More examples in the python folder: [tap.python~ numpy_gain] processes a whole signal vector per call with numpy, the form to use when it has to run in real time; [tap.python~ allpass] is an allpass filter that sizes its delay line in prepare(), and [tap.python~ numpy_allpass] the same filter per vector: swap one for the other and watch the CPU meter." } }