# IAudioGenerator

> Factory for instantiating GeneratorInstance to be used internally or from other scripts.

## Definition

* **Type:** Interface
* **Namespace:** [UnityEngine.Audio](/engine/6000.3/script-reference/unityengine/audio.md)
* **Assembly:** UnityEngine.AudioModule

```csharp
public interface IAudioGenerator : GeneratorInstance.ICapabilities
```

## Remarks

[IAudioGenerator](/engine/6000.3/script-reference/unityengine/audio/iaudiogenerator.md)s do not own any created [GeneratorInstance](/engine/6000.3/script-reference/unityengine/audio/generatorinstance.md) instances, nor should they try to store these for scripting. Instead, the user of the [IAudioGenerator](/engine/6000.3/script-reference/unityengine/audio/iaudiogenerator.md) should expose the created [GeneratorInstance](/engine/6000.3/script-reference/unityengine/audio/generatorinstance.md) through their own API.

[IAudioGenerator](/engine/6000.3/script-reference/unityengine/audio/iaudiogenerator.md)s are generally implemented on a [MonoBehaviour](/engine/6000.3/script-reference/unityengine/monobehaviour.md) or a [ScriptableObject](/engine/6000.3/script-reference/unityengine/scriptableobject.md) to bind together asset/scene management and audio generation tools with a uniform interface. You can also directly instantiate a [GeneratorInstance](/engine/6000.3/script-reference/unityengine/audio/generatorinstance.md) using a [ControlContext](/engine/6000.3/script-reference/unityengine/audio/controlcontext.md) purely in code.

If you want to serialize a reference to a [IAudioGenerator](/engine/6000.3/script-reference/unityengine/audio/iaudiogenerator.md) and have an object picker for asset / component based factories, use the [IAudioGenerator.Serializable](/engine/6000.3/script-reference/unityengine/audio/iaudiogenerator/serializable.md) utility to store/load these references.

Additional Resources: [AudioSource.generator](/engine/6000.3/script-reference/unityengine/audiosource/generator.md), [AudioSource.generatorInstance](/engine/6000.3/script-reference/unityengine/audiosource/generatorinstance.md)

## Methods

| Method                                                                                                | Description                                                                                                                 |
| ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| [CreateInstance](/engine/6000.3/script-reference/unityengine/audio/iaudiogenerator/createinstance.md) | Ask this interface to create a [GeneratorInstance](/engine/6000.3/script-reference/unityengine/audio/generatorinstance.md). |

## Structs

| Struct                                                                                                            | Description                                                                                                                                                                                                                                                                                                                                                                                                                      |
| ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [IAudioGenerator.Serializable](/engine/6000.3/script-reference/unityengine/audio/iaudiogenerator/serializable.md) | A helper struct that allows you to object select and serialize a reference to any [Object](/engine/6000.3/script-reference/unityengine/object.md), [MonoBehaviour](/engine/6000.3/script-reference/unityengine/monobehaviour.md) or [ScriptableObject](/engine/6000.3/script-reference/unityengine/scriptableobject.md) that implements [IAudioGenerator](/engine/6000.3/script-reference/unityengine/audio/iaudiogenerator.md). |

## Inheritance

**Inherited Members:**

* [ICapabilities.isFinite](/engine/6000.3/script-reference/unityengine/audio/generatorinstance/icapabilities/isfinite.md)
* [ICapabilities.isRealtime](/engine/6000.3/script-reference/unityengine/audio/generatorinstance/icapabilities/isrealtime.md)
* [ICapabilities.length](/engine/6000.3/script-reference/unityengine/audio/generatorinstance/icapabilities/length.md)
