Skip to main content

SonixToneGenerator

Generate raw audio waveforms as AudioRawData. Useful for tuning references, test signals, and note playback.

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
val square = SonixToneGenerator.generate(
frequencyHz = 261.63f,
durationMs = 500,
waveType = WaveType.SQUARE
)

Swift

let tone = SonixToneGenerator.generate(frequencyHz: 440, durationMs: 1000)

let square = SonixToneGenerator.generate(
frequencyHz: 261.63,
durationMs: 500,
waveType: .square
)

Parameters

ParameterTypeDefaultDescription
frequencyHzFloatrequiredTone frequency in Hz
durationMsIntrequiredDuration in milliseconds
waveTypeWaveTypeSINEWaveform shape
amplitudeFloat0.8Peak amplitude (0.0 to 1.0)
sampleRateInt44100Sample rate in Hz

Waveform Types

TypeShapeUse Case
SINESmooth sinusoidalTuning references, pure tones
SQUAREFlat top and bottomRich harmonics, retro sounds
SAWTOOTHLinear rampBright, buzzy tones
TRIANGLELinear peakSofter than square, mellower

Validation

generate(...) throws IllegalArgumentException when frequencyHz, durationMs, or sampleRate are not positive, or when amplitude is outside [0.0, 1.0].

Common Patterns

Tuning Reference

// A4 = 440 Hz, 2 seconds
val reference = SonixToneGenerator.generate(440f, durationMs = 2000)
SonixEncoder.encode(data = reference, outputPath = "a440.wav", format = "wav")

Test Signal with Normalization

val tone = SonixToneGenerator.generate(1000f, durationMs = 500, amplitude = 0.5f)
val normalized = SonixAudioUtils.normalize(tone)

Next Steps