love.sound.newSoundData

Creates new SoundData from a filepath, File, or Decoder. It's also possible to create SoundData with a custom sample rate, channel and bit depth.

The sound data will be decoded to the memory in a raw format. It is recommended to create only short sounds like effects, as a 3 minute song uses 30 MB of memory this way.

Function

Synopsis

soundData = love.sound.newSoundData( filename )

Arguments

string filename
The file name of the file to load.

Returns

SoundData soundData
A new SoundData object.

Function

Synopsis

soundData = love.sound.newSoundData( file )

Arguments

File file
A File pointing to an audio file.

Returns

SoundData soundData
A new SoundData object.

Function

Synopsis

soundData = love.sound.newSoundData( decoder )

Arguments

Decoder decoder
Decode data from this Decoder until EOF.

Returns

SoundData soundData
A new SoundData object.

Function

Synopsis

soundData = love.sound.newSoundData( samples, rate, bits, channels )

Arguments

number samples
Total number of samples.
number rate (44100)
Number of samples per second
number bits (16)
Bits per sample (8 or 16).
number channels (2)
Either 1 for mono or 2 for stereo.

Returns

SoundData soundData
A new SoundData object.

Examples

Loading SoundData from files

wav = love.sound.newSoundData("doom.wav")
-- Beware: if doom.mp3 is a huge file, it will take 
-- ages to decode.
mp3 = love.sound.newSoundData("doom.mp3")

Beep function

local rate = 44100 -- samples per second
local length = 1/32 -- 0.03125 seconds
local tone = 440 -- Hz
local p = math.floor(rate/tone) -- 100 (wave length in samples)
local soundData = love.sound.newSoundData(length*rate, rate, 16, 1)
for i=0, length*rate-1 do
--	soundData:setSample(i, math.sine(2*math.pi*i/p)) -- sine
	soundData:setSample(i, i%p<p/2 and 1 or -1) -- the half of the wave is 1, another half is -1
end
local source = love.audio.newSource(soundData)
local function beep() source:play() end

Call it as:

beep()

See Also


Other Languages