Garry's Mod Wiki

sound.Generate

  sound.Generate( string indentifier, number samplerate, number length, function callbackOrData, number loopStart = nil )

Description

Creates a sound from a function.

Arguments

1 string indentifier
An unique identified for the sound.
You cannot override already existing ones.
2 number samplerate
The sample rate of the sound. Must be 11025, 22050 or 44100.
3 number length
The length in seconds of the sound to generate.
4 function or table callbackOrData
A function which will be called to generate every sample on the sound.
Function argument(s):
1 number sampleIndex - The current sample number.
Function return value(s):
1 number sampleValue - The return value must be between -1.0 and 1.0.
Other values will wrap back to the -1 to 1 range and basically clip.
There are 65535 possible quantifiable values between -1 and 1.

This argument can also be given a table of samples, where values must range from -1 to 1.
This argument can also be a string of raw 16bit binary data, (each sample is unsigned short).

5 number loopStart = nil
Sample ID of the loop start. If given, the sound will be looping and will restart playing at given position after reaching its end.

Example

Plays a 2000 Hz sine wave at maximum volume.

local frequency = 2000 -- Hz local samplerate = 44100 local function data( t ) return math.sin( t * math.pi * 2 / samplerate * frequency ) end test_sound_id = test_sound_id and test_sound_id + 1 or 10 sound.Generate( "testgen" .. test_sound_id, samplerate, 2, data ) surface.PlaySound( "testgen" .. test_sound_id )