Repository navigation
Conversation
The ReadMe gains "Objects without audio: tap.python" — loading, the output table, outlets and the dumpout, messages and anything, the threads and their limits — and points the reader to the Overview, the help files and the Documentation window. For that window: tap.python's reference page, by hand (docs/tap.python.maxref.xml; a plain SDK class has no generator), with see-also links both ways (tap.python~'s through MIN_RELATED, its page rewritten by Max); a package topic (docs/topics/), the guide "Writing Max Objects in Python" (docs/vignettes/), and three tutorials with their patchers (docs/tutorials/pythontap-tut/: a gain per sample and per vector, a filter with prepare(), an object without audio). The help patchers are in tabs — tap.python's basic, lists, outlets, messages and threads; tap.python~'s basic, numpy, allpass and mc. — with Max's ? tab; the PythonTap Overview is in extras/, the Extras menu and the package's home patcher. Writing the mc. tab found that [mc.tap.python~] was "No such object": Max wraps an external in mc. through an init/ mapping, as its own init/ maps mc.cycle~, and the package had none. init/ tap.python.txt now maps mc.tap.python~ to Max's MC wrapper, assembling a package requires the line, and a runtime test pins it (failing eight checks without the line): two instances, setvalue and applyvalues reaching the class's attributes and messages — which, being each instance's own, a plain message to the wrapper does not. The ReadMe says so. scripts/check-docs.py checks what is written by hand, in CI: the pages well-formed with the right roots, every link between them resolving, every patcher's patch cords whole. Checked in Max 9.1.5 on macOS: every page and patcher opened, the help tabs clicked through, the tutorial patchers run (euclid's rhythm, note_name's C# and 4, scale's list), the Package Docs' Topics, Guides and Tutorials listing the topic, the guide and the tutorials, a tutorial's Open Tutorial opening its patcher, and the Overview in the Extras menu; every runtime test passes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019rVV9SkjkWmiBXFMT4whkz
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019rVV9SkjkWmiBXFMT4whkz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Plan item 9.4 (docs/TAP-PYTHON-PLAN.md).
What's added
tap.python. It covers loading, the output table, outlets and the dumpout, messages andanything, and the threads and their limits.docs/tap.python.maxref.xml, written by hand because a plain SDK class has no generator.tap.python~'s link comes fromMIN_RELATED, and its page is Max's own rewrite.docs/topics/;docs/vignettes/;docs/tutorials/pythontap-tut/: a gain per sample and per vector, a filter withprepare(), and an object without audio.tap.python: basic, lists, outlets, messages, threads and?.tap.python~: basic, numpy, allpass, mc. and?. Its old single page overlapped its own objects, so the basic tab was rebuilt.extras/: listed in the Extras menu and set as the package's home patcher.scripts/check-docs.py, run in CI. It checks that the pages are well-formed XML with the right root element, that every link resolves, and that every patcher's patch cords connect real boxes and inlets.A bug the docs found:
mc.tap.python~was "No such object"mc.through aninit/mapping; Max's owninit/mapsmc.cycle~this way. The package had no such mapping, so the ReadMe's "wrap the object inmc." didn't work.init/tap.python.txtnow mapsmc.tap.python~to Max's MC wrapper aroundtap.python~.assemble-package.pyfails a package that lacks the line.setvalue 2 gain 0.1reaching one instance,applyvalues gain 0.5 0.25giving each its own value, andsetvalue 1 float 0.75calling a method.gain 0.5sent to the wrapper is not understood. A class's attributes and messages belong to each instance, so the wrapper only forwards them throughsetvalueandapplyvalues. The ReadMe and the help say so.Checked in Max 9.1.5 on macOS
C#and4, and scale returned its list.tap.pythonis listed as a reference page, not an object, because it has no file of its own. Max lists its owninit-mapped objects (mc.abs~) the same way.Not done here
tap.pythonmessage sentence.🤖 Generated with Claude Code
https://claude.ai/code/session_019rVV9SkjkWmiBXFMT4whkz