Difference between revisions of "love.sound.newSoundData (日本語)"
m (→用例: Beep 関数の追加) |
|||
Line 8: | Line 8: | ||
</source> | </source> | ||
=== 引数 === | === 引数 === | ||
− | {{param|string|filename| | + | {{param|string|filename|読み込みを行うファイルのファイル名を指定します。}} |
=== 返値 === | === 返値 === | ||
{{param|SoundData|soundData|新規 SoundData オブジェクト。}} | {{param|SoundData|soundData|新規 SoundData オブジェクト。}} | ||
Line 20: | Line 20: | ||
=== 返値 === | === 返値 === | ||
{{param|SoundData|soundData|新規 SoundData オブジェクト。}} | {{param|SoundData|soundData|新規 SoundData オブジェクト。}} | ||
− | == | + | == 関数 == |
− | === | + | === 概要 === |
<source lang="lua"> | <source lang="lua"> | ||
soundData = love.sound.newSoundData( decoder ) | soundData = love.sound.newSoundData( decoder ) | ||
Line 48: | Line 48: | ||
-- 復号化には時間が掛かります。 | -- 復号化には時間が掛かります。 | ||
mp3 = love.sound.newSoundData("doom.mp3") | mp3 = love.sound.newSoundData("doom.mp3") | ||
+ | </source> | ||
+ | === Beep 関数 === | ||
+ | <source lang="lua"> | ||
+ | local rate = 44100 -- 秒あたりのサンプル数 | ||
+ | local length = 1/32 -- 0.03125 秒 | ||
+ | local tone = 440.0 -- 周波数 | ||
+ | local p = math.floor(rate/tone) -- 100 (サンプルの波形長) | ||
+ | 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)) -- 正弦波 | ||
+ | soundData:setSample(i, i%p<p/2 and 1 or -1) -- 矩形波。波形の前半は 1 であり、後半は -1 です。 | ||
+ | end | ||
+ | local source = love.audio.newSource(soundData) | ||
+ | local function beep() source:play() end | ||
+ | </source> | ||
+ | 呼び出し方法は、 | ||
+ | <source lang="lua"> | ||
+ | beep() | ||
</source> | </source> | ||
== 関連 == | == 関連 == | ||
Line 56: | Line 74: | ||
{{#set:Since=000}} | {{#set:Since=000}} | ||
== そのほかの言語 == | == そのほかの言語 == | ||
− | {{i18n|love.sound.newSoundData}} | + | {{i18n (日本語)|love.sound.newSoundData}} |
Revision as of 08:12, 22 July 2023
ファイルパス, File, または Decoder から SoundData を新規作成します。 サンプルレート、チャンネル、ビット深度を指定して SoundData を作成することもできます。
音声データは生の形式でメモリへ復号します。この方法において 3 分の楽曲では 30 MB のメモリを使用するため、効果音のような短い音声でのみ作成を推奨します。
Contents
関数
概要
soundData = love.sound.newSoundData( filename )
引数
string filename
- 読み込みを行うファイルのファイル名を指定します。
返値
SoundData soundData
- 新規 SoundData オブジェクト。
Function
Synopsis
soundData = love.sound.newSoundData( file )
引数
File file
- 音声ファイルを指し示す File オブジェクト。
返値
SoundData soundData
- 新規 SoundData オブジェクト。
関数
概要
soundData = love.sound.newSoundData( decoder )
引数
Decoder decoder
- Decoder からデータが EOF になるまで複合化を行うデータ。
返値
SoundData soundData
- 新規 SoundData オブジェクト。
関数
概要
soundData = love.sound.newSoundData( samples, rate, bits, channels )
引数
number samples
- 合計サンプル数。
number rate (44100)
- 秒ごとのサンプル数。
number bits (16)
- ビットごとのサンプル数 (8 または 16)。
number channels (2)
- 1 でモノラル または 2 でステレオ のいずれか。
返値
SoundData soundData
- 新規 SoundData オブジェクト。
用例
ファイルから SoundData を読み込みます。
wav = love.sound.newSoundData("doom.wav")
-- 注意: doom.mp3 は巨大なファイルであるとき、
-- 復号化には時間が掛かります。
mp3 = love.sound.newSoundData("doom.mp3")
Beep 関数
local rate = 44100 -- 秒あたりのサンプル数
local length = 1/32 -- 0.03125 秒
local tone = 440.0 -- 周波数
local p = math.floor(rate/tone) -- 100 (サンプルの波形長)
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)) -- 正弦波
soundData:setSample(i, i%p<p/2 and 1 or -1) -- 矩形波。波形の前半は 1 であり、後半は -1 です。
end
local source = love.audio.newSource(soundData)
local function beep() source:play() end
呼び出し方法は、
beep()
関連