Difference between revisions of "love.sound.newSoundData"
(→Beep function) |
m (→Beep function: - fix example.) |
||
(3 intermediate revisions by one other user not shown) | |||
Line 52: | Line 52: | ||
=== Beep function === | === Beep function === | ||
<source lang="lua"> | <source lang="lua"> | ||
− | local rate = 44100 -- samples per second | + | local rate = 44100 -- samples per second |
− | local length = 1/32 -- 0.03125 seconds | + | local length = 1/32 -- 0.03125 seconds |
− | local tone = 440 -- Hz | + | local tone = 440.0 -- Hz |
− | local p = math.floor(rate/tone) -- 100 | + | local p = math.floor(rate/tone) -- 100 (wave length in samples) |
− | local soundData = love.sound.newSoundData(length*rate, rate, 16, 1) | + | local soundData = love.sound.newSoundData(math.floor(length*rate), rate, 16, 1) |
− | for i=0, | + | for i=0, soundData:getSampleCount() - 1 do |
+ | -- soundData:setSample(i, math.sin(2*math.pi*i/p)) -- sine wave. | ||
+ | soundData:setSample(i, i%p<p/2 and 1 or -1) -- square wave; the first half of the wave is 1, the second half is -1. | ||
+ | end | ||
local source = love.audio.newSource(soundData) | local source = love.audio.newSource(soundData) | ||
local function beep() source:play() end | local function beep() source:play() end | ||
</source> | </source> | ||
− | + | Call it as: | |
<source lang="lua"> | <source lang="lua"> | ||
beep() | beep() |
Latest revision as of 18:24, 14 February 2022
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.
Contents
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.0 -- Hz
local p = math.floor(rate/tone) -- 100 (wave length in samples)
local soundData = love.sound.newSoundData(math.floor(length*rate), rate, 16, 1)
for i=0, soundData:getSampleCount() - 1 do
-- soundData:setSample(i, math.sin(2*math.pi*i/p)) -- sine wave.
soundData:setSample(i, i%p<p/2 and 1 or -1) -- square wave; the first half of the wave is 1, the second half is -1.
end
local source = love.audio.newSource(soundData)
local function beep() source:play() end
Call it as:
beep()
See Also
Other Languages
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info