CustomNode and make your own implementations.
Run the Template
- Go to Assets/InworldRuntime/Scenes/Nodesand play theCustomNodescene. 
- Once the graph is compiled, you can either enter text or input audio by hold the record button and release the button to send the audio.
- In this node, if you are sending text, it will make your input text uppercase.
- If you send the audio, it will make the pitch higher.

Understanding the Graph
CustomNodeSampleCanvas contains an InworldGraphExecutor whose graph asset includes only a single CustomSample.
The graph is very simple. It contains a single node, CustomSampleNode, with no edges.
CustomSampleNode is both the StartNode and the EndNode.

CustomNode details
The node is usingCustomSampleNode, which is written and inherited from the CustomNodeAsset.
In its overrided ProcessBaseData(), it checks the input InworldBaseData, and process that data based on its type.
CustomSampleNodeAsset.cs
InworldAudioManager
In this demo, theInworldController does not include any primitive modules.
It includes an InworldAudioManager for sampling the microphone input.
InworldAudioManager handles audio processing and is also modular.
In this demo, it uses four components:
- AudioCapturer: Manages microphone on/off and input devices. Uses Unity’s Microphoneby default, and can be extended via third‑party plugins.
- AudioCollector: Collects raw samples from the microphone.
- PlayerVoiceDetector: Implements IPlayerAudioEventHandlerandICalibrateAudioHandlerto emit player audio events and decide which timestamped segments to keep from the stream.
- AudioDispatcher: Sends the captured microphone data for downstream processing.

Workflow
- When the game starts, InworldControllerinitalized immediately and invokeOnFrameworkInitializedevent as there is no primitive modules.
- Then InworldGraphExecutorinitializes its graph asset by calling each component’sCreateRuntime().
CreateRuntime() is called. It’s in its parent class.
CustomNodeAsset.cs
- After compilation, the OnGraphCompiledevent is invoked.
CustomNodeTemplate subscribes to it and enables the UI components.
Users can then interact with the graph system.
CustomNodeTemplate.cs
- After the UI is initialized, send the input text or audio to the graph.
- 
Calling ExecuteGraphAsync()eventually produces a result and invokesOnGraphResult(), whichCustomNodeTemplatesubscribes to in order to receive the data.
CustomNodeTemplate.cs