Revision Difference
sound.Generate#568345
<function name="Generate" parent="sound" type="libraryfunc">
<description>
Creates a sound from a function.
Creates a sound from raw audio sample data.
</description>
<realm>Client</realm>
<args>
<arg name="identifier" type="string">A unique identifier for the sound.
<warning>You cannot override existing identifiers.</warning>
</arg>
<arg name="samplerate" type="number">
The sample rate of the sound.
Must be `11025`, `22050` or `44100`.
</arg>
<arg name="duration" type="number">
The length in seconds of the sound to generate.
</arg>
<arg name="sampleData" type="function|table|string">
The raw sample data which will be turned into audio.
Can be a **function** which will be called to generate every sample on the sound.
<callback>
<arg type="number" name="sampleIndex">
The current sample number.
</arg>
<ret type="number" name="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`.
</ret>
</callback>
Can be a **table** of <page text="numbers">number</page> in the range `-1` to `1`
Can be a **string** of unsigned 16 bit (a "short") binary data.
</arg>
<arg name="loopStart" type="number" default="nil" added="2024.06.04">Sample ID of the loop start. If given, the sound will be looping and will restart playing at given position after reaching its end.</arg>
</args>
</function>
<example name="Using a function to create sample data">
<description>
Plays a 2000 Hz sine wave at maximum volume.
</description>
<code>
local frequency = 2000 -- Hz
local duration = 2 -- Seconds
local sampleRate = 44100
local function data( sampleIndex )
return math.sin( sampleIndex * math.pi * 2 / sampleRate * frequency )
end
sound.Generate( "WikiFunctionSoundExample", sampleRate, duration, data )
surface.PlaySound( "WikiFunctionSoundExample" )
</code>
</example>
Garry's Mod
Rust
Steamworks
Wiki Help