Difference between revisions of "love.sound.newSoundData"
m (→Beep function: - fix example.) |
|||
(14 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | Creates new SoundData from a Decoder. | + | 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 == | == Function == | ||
=== Synopsis === | === Synopsis === | ||
<source lang="lua"> | <source lang="lua"> | ||
− | + | soundData = love.sound.newSoundData( filename ) | |
</source> | </source> | ||
=== Arguments === | === Arguments === | ||
− | {{param| | + | {{param|string|filename|The file name of the file to load.}} |
+ | === Returns === | ||
+ | {{param|SoundData|soundData|A new SoundData object.}} | ||
+ | == Function == | ||
+ | === Synopsis === | ||
+ | <source lang="lua"> | ||
+ | soundData = love.sound.newSoundData( file ) | ||
+ | </source> | ||
+ | === Arguments === | ||
+ | {{param|File|file|A File pointing to an audio file.}} | ||
=== Returns === | === Returns === | ||
− | {{param|SoundData| | + | {{param|SoundData|soundData|A new SoundData object.}} |
== Function == | == Function == | ||
=== Synopsis === | === Synopsis === | ||
<source lang="lua"> | <source lang="lua"> | ||
− | + | soundData = love.sound.newSoundData( decoder ) | |
</source> | </source> | ||
=== Arguments === | === Arguments === | ||
− | {{param| | + | {{param|Decoder|decoder|Decode data from this Decoder until EOF.}} |
=== Returns === | === Returns === | ||
− | {{param|SoundData| | + | {{param|SoundData|soundData|A new SoundData object.}} |
== Function == | == Function == | ||
=== Synopsis === | === Synopsis === | ||
<source lang="lua"> | <source lang="lua"> | ||
− | + | soundData = love.sound.newSoundData( samples, rate, bits, channels ) | |
</source> | </source> | ||
=== Arguments === | === Arguments === | ||
{{param|number|samples|Total number of samples.}} | {{param|number|samples|Total number of samples.}} | ||
− | {{param|number|rate|Number of samples per second}} | + | {{param|number|rate (44100)|Number of samples per second}} |
− | {{param|number|bits|Bits per sample (8 or 16).}} | + | {{param|number|bits (16)|Bits per sample (8 or 16).}} |
− | {{param|number|channels|Either 1 for mono | + | {{param|number|channels (2)|Either 1 for mono or 2 for stereo.}} |
=== Returns === | === Returns === | ||
− | {{param|SoundData| | + | {{param|SoundData|soundData|A new SoundData object.}} |
== Examples == | == Examples == | ||
=== Loading SoundData from files === | === Loading SoundData from files === | ||
Line 39: | 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