From maxmcp
Provides guidelines for creating organized Max/MSP patches with MaxMCP: object addition, connections, signal flow, grid layout, section organization, and presentation UI design.
npx claudepluginhub signalcompose/maxmcpThis skill uses the workspace's default tool permissions.
This skill provides comprehensive guidelines for creating well-organized, maintainable Max/MSP patches using MaxMCP's MCP tools.
Organizes Max/MSP patch layouts by adjusting object positions, sizes, and patchcord routing in sections or full patches. Useful after edits, additions, or user requests for tidy layouts.
Creates and manages TouchDesigner networks via MCP API: operator creation/chaining/layout, rendering, GLSL shaders, error checking, data conversion (CHOP/SOP/POP/TOP/DAT).
Builds MCP apps adding interactive UI widgets like forms, pickers, dashboards, and confirmation dialogs to MCP servers for inline rendering in Claude and ChatGPT chats.
Share bugs, ideas, or general feedback.
This skill provides comprehensive guidelines for creating well-organized, maintainable Max/MSP patches using MaxMCP's MCP tools.
Before creating a patch, verify:
get_frontmost_patch or list_active_patches to identify the targetget_objects_in_patch to understand current stateAlways follow the top-to-bottom, left-to-right signal flow convention:
[Input Sources] â Top of patch
â
[Processing] â Middle
â
[Output/Display] â Bottom of patch
Use get_avoid_rect_position to find safe positions that don't overlap existing objects:
// Before adding an object, find a safe position
const position = await mcp.get_avoid_rect_position({
patch_id: "...",
near_x: 100,
near_y: 200,
width: 80,
height: 20
});
Align objects to a consistent grid:
Group related objects into functional sections:
ãããã¯ã»ã¯ã·ã§ã³åäœã§æ®µéçã«æ§ç¯ãããå šäœãäžåºŠã«äœããã5ãã§ãŒãºã§é²ããã
å®è£ ãéå§ããåã«ãã¹ãã«ã®ã«ãŒã«ããã©ã³ã®èšèšå¶çŽãšããŠçµã¿èŸŒãã
â Phase 0 ãé£ã°ããå Žå: èšè𿮵éã§ã«ãŒã«ãé©çšããªããšãå®è£ åŸã« trigger ã® outlet é åºã®ééããUI ãªããžã§ã¯ãã®é 眮ãã¹ïŒpatching_rect ã§ UI åªå é 眮 â é·è·é¢ã»äžåãæ¥ç¶ã®å€§éçºçïŒã_parameter_order ã®äŸåãã§ãŒã³äžæŽåãªã©ãçºèŠãããããå šäœã®åæ§ç¯ãå¿ èŠã«ãªãã
ä¿¡å·ãããŒèšèš: å šã»ã¯ã·ã§ã³ã®äŸåé¢ä¿ãæããäžâäžãããŒã確ä¿
æ¥ç¶èšèš: trigger ã® outlet é åºãšäžæµã® hot/cold inlet ã®æŽåæ§ãèšèš
pack / pak ã«æ¥ç¶ãã trigger ã¯ãcold inlet â å³ outletãhot inlet â å·Š outletãã©ã¡ãŒã¿åŸ©å
é åºèšèš: _parameter_order ã埩å
äŸåãã§ãŒã³å
šäœã§èšèš
_parameter_range ãèšå®ãããã§ãŒã³ â ç¯å²å
ã§å€ã埩å
ãããã©ã¡ãŒã¿ããå
ã¢ããªãã¥ãŒãèšç»: åãªããžã§ã¯ãã«å¿ èŠãªã¢ããªãã¥ãŒãã MCP Notes ã®ãã³ãã¬ãŒãã§äºåã«åæ
é¢é£ã¹ãã«ã®åç §: äœæ¥å 容ã«å¿ããŠä»¥äžã®ã¹ãã«ãããŒãããèšèšå¶çŽãšããŠé©çšãã
| ã¹ãã« | æ¡ä»¶ | åç §ãã¹ãã«ãŒã« |
|---|---|---|
m4l-techniques | M4L ããã€ã¹éçºæïŒåžžæïŒ | live.observer ãã¿ãŒã³ãpattr æ°žç¶åãnamespace ã«ãŒã«ã_parameter_order èšèš |
max-techniques | poly~, pattr, signal åŠçç | pattr range å¶éãcascading init |
max-resources | ãªããžã§ã¯ãã® outlet/inlet æ§é ãäžæãªæ | ãªãã¡ã¬ã³ã¹ããŒãžã§ç¢ºèªããŠããèšèš |
Why Phase 0 ãå¿ èŠ: ãã©ã³ãæ¿èªãããåŸã«ã«ãŒã«ãé©çšããŠããèšèšèªäœãééã£ãŠããã°å€§éã®ææ»ããçºçããã
åææ¡ä»¶: Phase 0 ã®èšèšãå®äºããŠããããšïŒä¿¡å·ãããŒèšèšãæ¥ç¶èšèšã_parameter_order èšèšãã¢ããªãã¥ãŒãèšç»ïŒã
åã»ã¯ã·ã§ã³ãç¬ç«ããŠå®æããããã»ã¯ã·ã§ã³éã®æ¥ç¶ã¯ãã®ãã§ãŒãºã§ã¯è¡ããªãã
â ã»ã¯ã·ã§ã³åäœãé£ã°ããŠå šäœãäžæ¬æ§ç¯ããå Žå: Phase 8 æ€èšŒïŒéè€ã»äº€å·®ã»äžåãæ€åºïŒã§å šãªããžã§ã¯ãã»å šãããã³ãŒãã察象ã«ç¢ºèªãå¿ èŠã«ãªããã»ã¯ã·ã§ã³åäœã§ããã°æ€èšŒå¯Ÿè±¡ã¯ã»ã¯ã·ã§ã³å ã®ãªããžã§ã¯ãã®ã¿ã§æžãããäžæ¬æ§ç¯ã§ã¯å€æŽã®ãã³ã«ãããå šäœã®å€§éã®ãªããžã§ã¯ããå確èªããããšã«ãªããããŒã¯ã³æ¶è²»ãšäœæ¥éãççºããã
organize-patchïŒã»ã¯ã·ã§ã³å
ã¢ãŒãïŒã§ã¬ã€ã¢ãŠãæŽçãã®ãã§ãŒãºå®äºæç¹ã§ãåã»ã¯ã·ã§ã³ã¯å éšã¬ã€ã¢ãŠãã宿ãããµã€ãºãåºå®ãããã
åææ¡ä»¶:
â Phase 1 æªå®äºã§ Phase 2 ã«é²ãã å Žå: ã»ã¯ã·ã§ã³åäœã§ãŸãšããŠããã°ã°ã«ãŒããšããŠç§»åããã ãã§æžãããã»ã¯ã·ã§ã³ãæªç¢ºå®ã ãšåã ã®ãªããžã§ã¯ãã®åº§æšã1ã€ãã€èšç®ã»ç§»åããããšã«ãªããã»ã¯ã·ã§ã³ã¯ç°¡æãªã°ã«ãŒãåã§ããããããé£ã°ããšã¬ã€ã¢ãŠãäœæ¥ã®è€éããççºããã
確å®ããåã»ã¯ã·ã§ã³ããã»ã¯ã·ã§ã³éæ¥ç¶ãèæ ®ããŠåççãªäœçœ®ã«é 眮ããã
é 眮ãã¿ãŒã³:
çŽåé
眮ïŒé 次äŸåïŒ: 䞊åé
眮ïŒåæµåäŸåïŒ:
[Section A] [Section A] [Section B]
+80-100px gap â â
[Section B] â åæµ â
+80-100px gap [Section C]
[Section C]
åææ¡ä»¶:
â Phase 2 æªå®äºã§ Phase 3 ã«é²ãã å Žå: ã»ã¯ã·ã§ã³äœçœ®ã確å®ããŠããªãç¶æ ã§ patchcord ãæ¥ç¶ãããšãã«ãªã¹ãªãããã³ãŒãã倧éçç£ãããããã®ç¶æ ã§ãããã³ãŒãã®æŽçã詊ã¿ãŠããããè€éãªã¹ãã²ããã£ãçãã ãã§åæããªãã
ã»ã¯ã·ã§ã³é 眮ã確å®ããåŸãã»ã¯ã·ã§ã³éã® patchcord ãæ¥ç¶ããã
connect_max_objects ã§ã»ã¯ã·ã§ã³éã® patchcord ã远å set_patchline_midpoints ã§çµè·¯ãæé©åorganize-patchïŒPhase 8 æ€èšŒïŒã§éè€ã»äº€å·®ããªãã確èªåææ¡ä»¶:
â Phase 4 ãé£ã°ããå Žå: çææã®ãã§ãã¯ãªã¹ãïŒadd_max_object ã®åŸïŒã¯åã ã®ãªããžã§ã¯ãã察象ãšããããããããå šäœã§ã®äžè²«æ§ïŒãã¢éã®èšå®æŽåã_parameter_order ã®äŸåãã§ãŒã³æŽåïŒã¯æ€åºã§ããªãããããã®åé¡ã¯ãŠãŒã¶ãŒãå®éã«ä¿åã»åŸ©å ã詊ããŸã§çºèŠãããåå ã®ç¹å®ã極ããŠå°é£ã«ãªãã
ãããå šäœã察象ãšããäžæ¬æ€èšŒãè¡ãã
å
š live.* UI ãªããžã§ã¯ããšå
š pattr ã®èšå®ã get_object_attribute ã§èªã¿æ»ãã以äžã確èª:
live. UI ãªããžã§ã¯ã*:
_parameter_initial_enable ã 1 ã_parameter_initial ãèšå®ãããŠããã_parameter_type ãš _parameter_unitstyle ã®æŽåæ§ïŒFloat(0) â Float(1)ïŒpattr:
parameter_enable 1, _parameter_invisible 1, _parameter_modmode 0, parameter_mappable 0 ãèšå®ãããŠããã_parameter_initial_enable ã 1 ã_parameter_range ãããŒã¿åã«å¿ããé©åãªç¯å²ã察ã«ãªããªããžã§ã¯ããåäžã°ã«ãŒãã®ãªããžã§ã¯ããåãèšå®ãã¿ãŒã³ãæã€ã確èª:
_parameter_type, _parameter_unitstyle, _parameter_initial_enable, _parameter_range ãäžèŽãããparameter_enable, _parameter_invisible, _parameter_modmode, parameter_mappable ãåããã¿ãŒã³ã_parameter_order ã®èªã¿æ»ãæ€èšŒå
šãã©ã¡ãŒã¿ã® _parameter_order ã get_object_attribute ã§èªã¿æ»ãã以äžãæ€èšŒ:
_parameter_range ãèšå®ãããã§ãŒã³ïŒpattr â pack â prepend â UIïŒããç¯å²å
ã§å€ã埩å
ãã UI ãªããžã§ã¯ãããå
ãscale / pak / pack çã®è€æ° inlet ãªããžã§ã¯ãã§ãhot inlet (0) ã«æ¥ç¶ãããã©ã¡ãŒã¿ãæåŸã«åŸ©å
ãããããããå šäœã察象ãšããæçµã¬ã€ã¢ãŠãæ€èšŒ:
ïŒPhase 1 ã®åã»ã¯ã·ã§ã³ã§å®æœæžã¿ã® Phase 8 æ€èšŒãããããå šäœã§å床å®è¡ïŒ
å MCP æäœã®ååŸã«å®è¡ãã¹ã確èªäºé ãã¹ãã«ã®ååãæäœã¬ãã«ã§é©çšããããã®ãã§ãã¯ãªã¹ãã
â ãã®ãã§ãã¯ãªã¹ããé£ã°ããå Žå: åŸå·¥çšã§ã®ä¿®æ£ä»¥åã«ãèšå®ãå¿ãã«ãããã°ã倧éçºçããããã©ã¡ãŒã¿åãããã©ã«ãïŒ"live.numbox[1]"ïŒã®ãŸãŸãpresentation ã 1 ã®ãŸãŸã_parameter_initial_enable ã 0 ã®ãŸãŸçãåå ç¹å®ã«èšå€§ãªæéãšåŽåãè²»ããã®ã¯ Claude èªèº«ãçæçŽåŸã«ç¢ºèªããã°æ°ç§ã§æžãäœæ¥ããåŸããæ¢ããšäœåããããã
get_objects_in_patch ã§ãªããžã§ã¯ãã®ããã¹ãã確èªãã@ æ§æã®ã¢ããªãã¥ãŒããåæ ãããŠãããæ€èšŒset_object_attribute ã§ presentation 0 ãèšå®_parameter_longname ã varname ã«åãããŠèšå®_parameter_initial_enable 1 ãèšå®_parameter_initial ãèšå®get_object_attribute ã§ _parameter_type, _parameter_unitstyle, _parameter_range ãæå³éãã確èªtext / texton ã©ãã«ãèšå®replace_object_text ã§ããã¹ããèšå®parameter_enable 1, _parameter_invisible 1, _parameter_modmode 0, parameter_mappable 0 ãèšå®_parameter_range ãããŒã¿ã«å¿ããç¯å²ã«èšå®ïŒFloat: [-100000, 100000] çïŒ_parameter_type ãããŒã¿åã«å¿ããŠèšå®ïŒFloat: 0, blob: 3 çïŒ_parameter_initial_enable 1 ãèšå®â ãã®ãã§ãã¯ãªã¹ããé£ã°ããå Žå: outlet/inlet ã®åœ¹å²ãæšæž¬ã§æ¥ç¶ããåäœããªãæ¥ç¶ãäœæããããŠãŒã¶ãŒã«ææãããŠåæâãªãã¡ã¬ã³ã¹ç¢ºèªâ忥ç¶ã®ãµã€ã¯ã«ãçºçãã1åã®ç¢ºèªã§æžãäœæ¥ã3å以äžã®ããåãã«ãªããtrigger ã® outlet é åºãééãããšãhot/cold ã®å®è¡é åºãé転ããå€ãæ ŒçŽãããåã« pack ãçºç«ããçã®ããžãã¯äžå ·åãçºçããã
get_object_io_info ã§æ¥ç¶å
ã® outlet æ°ãšæ¥ç¶å
ã® inlet æ°ã確èªtrigger ããæ¥ç¶ããå Žå:
pattr ããæ¥ç¶ããå Žå:
max-resources ã¹ãã«ã§ãªãã¡ã¬ã³ã¹ãå¿
ã確èªãããæšæž¬ã«ããæ¥ç¶ã¯ææ»ãã®æå€§ã®åå ãšãªãâ ãã®æ€èšŒãé£ã°ããå Žå: äžåãæ¥ç¶ããªããžã§ã¯ãéè€ããããã³ãŒããšãªããžã§ã¯ãã®äº€å·®ããŠãŒã¶ãŒã®ç®èŠç¢ºèªãŸã§æ€åºãããªããå šãŠåº§æšããŒã¿ããæ©æ¢°çã«æ€åºå¯èœãªåé¡ã§ããããŠãŒã¶ãŒã«ææãããåã«èªåã§ä¿®æ£ãã¹ãåé¡ã
äžé£ã®ã¬ã€ã¢ãŠãæäœãå®äºããåŸã«å¿ ãå®è¡ãã:
get_objects_in_patch ã§å
šãªããžã§ã¯ãã®ç©åœ¢ (position + size) ãååŸget_patchlines ã§å
šãããã³ãŒãã® start_point, end_point, midpoints ãååŸstart_point.y > end_point.y ãã€ããããã€ã³ããªã â ãªããžã§ã¯ãç§»åãŸã㯠U-shape ããããã€ã³ã远å â äŸåãã§ãŒã³ãèæ ®ããåå¥ã« order ãèšå®ããå Žå: pack ã ãã§ãªããå€ãã®ãªããžã§ã¯ãã® cold inlet ã«å¿ èŠãªå€ãä»£å ¥ãããªããŸãŸãªããžã§ã¯ããåäœïŒèª€åäœïŒãããã¡ãã»ãŒãžã®é åºã«èµ·å ãããã°ã¯åå ãéåžžã«åããã¥ãããç¹å®ãšä¿®æ£ã«èšå€§ãªæéãšåŽåãè²»ããããšã«ãªãã_parameter_range ãèšå®ãããåã«å€ã埩å ãããšãããã©ã«ãç¯å² [0, 127] ã§ã¯ã©ã³ããããä¿åããå€ã倱ãããã
ãã©ã¡ãŒã¿ãèšå®ããåã«ã埩å äŸåãã§ãŒã³å šäœãèšèšãã:
pack / pak ã® hot/cold inlet æ§é ãç¹å®scale çã®è€æ° inlet ãªããžã§ã¯ãã§ãhot inlet (0) ãš cold inlet ã®äŸåé¢ä¿ãç¹å®_parameter_range ãèšå®ãããã§ãŒã³ãå
ã«åŸ©å
_parameter_order ã get_object_attribute ã§èªã¿æ»ããäŸåãã§ãŒã³ãšã®æŽåæ§ã確èªãPhase 4ïŒå®ææ€èšŒïŒã§ãåæ€èšŒããAlways provide meaningful varnames for important objects:
await mcp.add_max_object({
patch_id: "...",
object_type: "cycle~",
args: "440",
varname: "osc_main", // Meaningful, descriptive name
position: [100, 200]
});
Naming patterns:
osc_* for oscillatorsfilt_* for filtersenv_* for envelopesgain_* for gain controlsctrl_* for UI controlsin_* / out_* for I/OConnect objects using their varnames:
await mcp.connect_max_objects({
patch_id: "...",
source_varname: "osc_main",
source_outlet: 0,
dest_varname: "gain_master",
dest_inlet: 0
});
Connection rules:
get_patch_info to check object connectionscycle~ â *~ â dac~
midiin â midiparse â [processing] â noteout
For complex patches, use subpatchers (p object):
Max ã®å®è¡ã¢ãã«ïŒhot/cold inletïŒãšå®å šãªã¡ãã»ãŒãžåºåãã¿ãŒã³ãå šãŠã®ãããäœæ¥ã®åæç¥èã
Key topics:
trigger outputs right-to-leftpack vs pak (controlled vs any-inlet triggering)message boxes â use trigger, prepend, append insteadtrigger as the safest constant parameter sourcezl.reg for safe list storage, pack / pak for list constructionSee Execution Model & Messaging Reference
ãªããžã§ã¯ãããã¹ãã®èšè¿°èŠåãšå¹ççãªã³ãŒãã£ã³ã°ãã¿ãŒã³ã
Key topics:
trigger â t, int â i, etc.)scale 0. 1. not scale 0 1)scale exponent argument for integrated curve mapping (replacing pow + scale)*) as a compact alternative to gate + iSee Object Text Conventions Reference
| Tool | Purpose |
|---|---|
list_active_patches | List registered patches |
get_frontmost_patch | Get currently focused patch |
get_objects_in_patch | List objects in a patch |
get_patch_info | Get patch metadata |
add_max_object | Create a new object |
set_object_attribute | Modify object properties |
get_object_value | Get current value (number, slider, etc.) |
connect_max_objects | Create patchcord |
disconnect_max_objects | Remove patchcord |
get_patchlines | List all patchcords with coordinates and midpoints |
set_patchline_midpoints | Add/remove midpoints to fold patchcords |
remove_max_object | Delete an object |
get_avoid_rect_position | Find safe position |
get_console_log | Retrieve Max console messages |