Skip to main content
Glama

Create generative audio

create_generative_audio

Synthesize audio in TouchDesigner via an oscillator, FM, or noise chain, with volume control and opt-in speaker output, silent by default.

Instructions

SYNTHESIZE audio — generate sound rather than react to it. Builds an audio synthesis chain ending on a Null CHOP carrying the signal: 'oscillator' (a single tone, choose sine/triangle/sawtooth/square + frequency), 'fm' (two oscillators, one frequency-modulating the other for metallic/bell timbres), or 'noise' (a Noise CHOP shaped by a low-pass filter for textures). A Volume gain sets the level. Playback is opt-in: set to_device=true to route it to an Audio Device Out CHOP (default off, so the build stays silent and never prompts for audio hardware). Creates a new baseCOMP under parent_path holding the synth chain. The output Null feeds create_spectrum/create_waveform, bind_to_channel, or the speakers. Audio CHOPs are time-dependent — the signal is silent while the TD timeline is paused. Returns a summary plus a JSON block with the container path, created node paths, the audio Null path, the synth settings, the device-out path (if any), any node errors, and warnings (no preview image — the output is a CHOP, not a TOP).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
synthNoSynthesis method. 'oscillator' = a single tone-generating Audio Oscillator CHOP. 'fm' = two oscillators where one modulates the other's frequency (classic FM, metallic/bell timbres). 'noise' = a Noise CHOP shaped by a low-pass Audio Filter (wind/hiss/percussive textures).oscillator
volumeNoOutput level, 0..1 (a gain on the final signal). Start moderate to protect ears/speakers.
fm_depthNo(fm) Modulation depth — the peak frequency deviation in Hz applied to the carrier.
fm_ratioNo(fm) Modulator frequency as a multiple of the carrier (modulator = frequency × ratio).
waveformNoOscillator wave shape (ignored for the 'noise' synth).sine
frequencyNoCarrier / oscillator base frequency in Hz (e.g. 220 = A3).
to_deviceNoPlay the synthesized audio out through an Audio Device Out CHOP. Default OFF (opt-in) so the build never opens audio hardware — keeping it silent-safe and avoiding the macOS audio-permission prompt. Turn on only when you actually want sound out the speakers.
parent_pathNoParent network where the synth container is created (default '/project1')./project1
expose_controlsNoWhen true (default), expose live Frequency / Volume knobs (and FmRatio / FmDepth for the fm synth).
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses extensive behavioral traits beyond annotations: it creates a new baseCOMP, playback is opt-in to avoid audio hardware prompts, the signal is silent when the timeline is paused, and it returns a structured JSON with warnings. This far exceeds the bare readOnly/destructive/openWorld hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long (~250 words) but well-structured, front-loading the core verb and method. Each sentence adds useful context: synthesis types, playback opt-in, timeline dependency, return structure, and warnings. Minimal redundancy, though it could be slightly tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description enumerates the exact fields returned in the JSON block (container path, node paths, null path, settings, device-out, errors, warnings). It also covers creation, downstream usage, and safety behavior, making it complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all 9 parameters, so the description's parameter-level detail is minimal. It does explain the overall chain structure (e.g., Null CHOP, Audio Device Out) but adds little beyond the schema. With full schema coverage, baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it 'SYNTHESIZE audio — generate sound rather than react to it' and details the three synthesis methods. It distinguishes from reactive/analysis tools by emphasizing generation and noting the output feeds create_spectrum/create_waveform, making the purpose specific and distinct from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains when to use the tool (to generate sound) and mentions that the output can feed visualization tools like create_spectrum/create_waveform, implying alternatives. It also warns about timeline dependency and opt-in playback. However, it does not explicitly name sibling tools for when not to use it or list exclusion scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lucasmaher-hash/touch-designer-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server