SonixToneGenerator

Generates raw audio waveforms as AudioRawData.

Use this for synthesizing simple tones (sine, square, sawtooth, triangle) at a specific frequency and duration. Useful for tuning references, test signals, and note playback.

When to Use

ScenarioUse This?Why
Generate a tuning reference toneYesgenerate(440f, durationMs = 1000)
Synthesize a test signalYesSine, square, sawtooth, triangle
Play a MIDI note with SoundFontNoUse SonixMidiSynthesizer
Play back an audio fileNoUse SonixPlayer

Quick Start

Kotlin

// Generate a 440 Hz sine tone for 1 second
val tone = SonixToneGenerator.generate(440f, durationMs = 1000)

// Generate a square wave at C4 (261.63 Hz)
val square = SonixToneGenerator.generate(
frequencyHz = 261.63f,
durationMs = 500,
waveType = WaveType.SQUARE
)

Swift

// Generate a 440 Hz sine tone for 1 second
let tone = SonixToneGenerator.generate(frequencyHz: 440, durationMs: 1000)

// Generate a square wave at C4 (261.63 Hz)
let square = SonixToneGenerator.generate(
frequencyHz: 261.63,
durationMs: 500,
waveType: .square
)

Common Pitfalls

  1. Amplitude clipping: Keep amplitude <= 1.0 to avoid distortion

  2. Nyquist limit: Frequencies above sampleRate / 2 will produce aliasing artifacts

  3. Zero-duration: Very short durations at low sample rates may produce 0 samples

See also

For MIDI-based synthesis from SoundFont files

For available waveform types

Functions

Link copied to clipboard
fun generate(frequencyHz: Float, durationMs: Int, sampleRate: Int = 44100, waveType: WaveType = WaveType.SINE, amplitude: Float = 0.8f): AudioRawData

Generate a tone as AudioRawData.