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​