| # Composite audio driver | 
 |  | 
 | The `Composite` interface is a FIDL protocol exposed by audio drivers. The `Composite` interface | 
 | is generic and allows the configuration of various audio hardware types including those supported | 
 | by the `StreamConfig`, `Dai` and `Codec` FIDL interfaces. The `Composite` interface is more | 
 | generic and provides more flexible routing within audio subsystems. | 
 |  | 
 | In this protocol, ring buffer and DAI endpoints are configured based on the topology exposed via | 
 | the [Audio Signal Processing](signal-processing.md) APIs. In particular, endpoints represent the | 
 | hardware that is abstracted, specifically the number of ring buffers and DAI interconnects. Audio | 
 | hardware that can be represented by other audio driver types (`StreamConfig`, `Dai`, `Codec`) can | 
 | instead be represented with a `Composite` driver. For example, a `Composite` driver can represent | 
 | a `Codec` with a topology that has zero RingBuffer endpoints and one DAI interconnect endpoint. | 
 |  | 
 | When an audio driver provides the `Composite` interface, its client is responsible for configuring | 
 | the hardware, including data topology. Driver responsibilities include using the | 
 | `SignalProcessing` protocol to enumerate the topologies and capabilities supported by the hardware | 
 | it abstracts. | 
 |  | 
 | The `Composite` FIDL protocol is defined at | 
 | [composite.fidl](/sdk/fidl/fuchsia.hardware.audio/composite.fidl). | 
 |  | 
 |  |