Skip to content

Overview

Audity is a node-graph audio system for Unity. You build a sound as a graph of nodes, the same way you build a material in Shader Graph or a mesh in Geometry Nodes: sources, effects, modulation and logic wired together on a canvas. The graph compiles to a Burst program that runs as an audio generator on Unity’s Scriptable Audio Pipeline (SAP), so the same graph plays identically in the editor and in a build.

There is no fixed “Sound” or “Random Container” type. A footstep, a looping engine, an interactive music layer and a UI blip are all the same kind of asset: a graph. What makes them different is the nodes inside.

A graph carries three kinds of signal on its wires:

  • Audio - interleaved sample buffers (mono up to 7.1). This is the sound itself.
  • Float - a block-rate control value: a number that updates once per audio block and drives a pitch, a gain, a cutoff. A Float wire can be a single number or a vector (Vector 2/3/4).
  • Trigger - a sample-accurate event: “start a voice now”, “the clip finished”, “the beat landed”.

Each wire kind only connects to its own kind. A Wave Player’s audio output goes to a Mixer’s audio input; an ADSR’s Float output drives a Gain; a Trigger In fires a Wave Player’s Play.

Audity has two graph types. They share the same node model and editor; they differ in how they are used.

  • Sound Graph - a playable graph. It renders sound through an Output node and is what you assign to a scene object to hear. A new Sound Graph starts with an On Play node (the onset) and an Output node already placed. Its interface (see below) is the scripting surface: the values and triggers your game code drives.
  • Sub Graph - a reusable module you nest inside other graphs, like a Shader Graph Sub Graph. It has no required Output and can carry audio buses across its boundary. Use it to package an effect chain, a layered one-shot, or any piece of wiring you want to reuse.

A Sound Graph can contain Sub Graphs, and a Sub Graph can contain other Sub Graphs. Playable Sound Graphs cannot be nested inside each other.

A few smaller assets support the graph:

  • Sample - wraps an AudioClip with loop points, a Tail Start, a source tier, and gain/pitch trims. (A custom generator plugs in as a Sample Set entry’s source instead.) A Wave Player node plays Samples.
  • Sample Set - a group of Samples plus a selection policy (random, shuffle, round robin). A Wave Player with a Sample Set picks one per trigger, so a single node covers “twelve footstep variants, no immediate repeats”.
  • Batch Group - a policy asset that caps how many copies of a sound play at once (dense impacts collapse into one composite hit). It coordinates scene sources, not the graph.

You create all of these from Assets > Create > Audity.

When a Sound Graph plays, Audity compiles it to a flat program of node descriptors and Burst-compiled kernels, then runs that program block by block on the audio thread. Your game controls a playing instance from the main thread through the Audity Source component (or, at the lowest level, by assigning the graph to an AudioSource.generator directly). Control values, triggers and tempo are delivered over a lock-free pipe; audio comes back through the AudioSource.

Read next: