Difference between revisions of "love.sound.newSoundData"
m (→Beep function: - fix example.) |
|||
(8 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | 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. | + | 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. | 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. | ||
Line 49: | Line 49: | ||
mp3 = love.sound.newSoundData("doom.mp3") | mp3 = love.sound.newSoundData("doom.mp3") | ||
</source> | </source> | ||
+ | |||
+ | === Beep function === | ||
+ | <source lang="lua"> | ||
+ | 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 | ||
+ | </source> | ||
+ | Call it as: | ||
+ | <source lang="lua"> | ||
+ | beep() | ||
+ | </source> | ||
+ | |||
== See Also == | == See Also == | ||
* [[parent::love.sound]] | * [[parent::love.sound]] | ||
* [[Constructs::SoundData]] | * [[Constructs::SoundData]] | ||
[[Category:Functions]] | [[Category:Functions]] | ||
− | {{#set:Description=Creates new SoundData | + | {{#set:Description=Creates a new SoundData. }} |
{{#set:Since=000}} | {{#set:Since=000}} | ||
== Other Languages == | == Other Languages == | ||
{{i18n|love.sound.newSoundData}} | {{i18n|love.sound.newSoundData}} |
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