Compression

Dynamic-range control to keep the signal level balanced

This example demonstrates how to apply dynamic compression to an audio signal, using the Compressor node to control the dynamic range and maintain consistent output. Compression is achieved by configuring parameters such as ratio, threshold, and more.

// Configure the graph for rendering
let context = Assembler(rendering: .live).createAudioGraph()

// Configure an audio source (Renderer) from a local audio file
let url = URL(fileURLWithPath: "/path/to/source.mp3")
let source = MediaRenderer(contentsOf: url)

// Configure a compressor and its dynamic parameters
let destination = Compressor(channels: .stereo)
destination.ratio = 10.0
destination.threshold = -60.0
destination.attack = 0.003
destination.release = 0.250
destination.knee = 0.0

// Configure node connections
try context.connect(source: source, to: destination)
try context.connect(source: destination, to: context.destination)
source.play(after: 0)

The following video shows the sample code in action and its real-time processing.

circle-info

For a complete description of each class, method, and property referenced in this section, refer to the official API documentationarrow-up-right, where you will find detailed references, available components, parameters, and additional usage code examples.

Last updated