Difference between revisions of "love.sound.newSoundData (日本語)"

(Created page with "ファイルパス, File, または Decoder から SoundData を新規作成します。 サンプルレ...")
 
m (Function)
 
(One intermediate revision by the same user not shown)
Line 8: Line 8:
 
</source>
 
</source>
 
=== 引数 ===
 
=== 引数 ===
{{param|string|filename|ファイルから読み込むためにファイル名を指定します。}}
+
{{param|string|filename|読み込みを行うファイルのファイル名を指定します。}}
 
=== 返値 ===
 
=== 返値 ===
 
{{param|SoundData|soundData|新規 SoundData オブジェクト。}}
 
{{param|SoundData|soundData|新規 SoundData オブジェクト。}}
== Function ==
+
== 関数 ==
=== Synopsis ===
+
=== 概要 ===
 
<source lang="lua">
 
<source lang="lua">
 
soundData = love.sound.newSoundData( file )
 
soundData = love.sound.newSoundData( file )
Line 20: Line 20:
 
=== 返値 ===
 
=== 返値 ===
 
{{param|SoundData|soundData|新規 SoundData オブジェクト。}}
 
{{param|SoundData|soundData|新規 SoundData オブジェクト。}}
== Function ==
+
 
=== Synopsis ===
+
== 関数 ==
 +
=== 概要 ===
 
<source lang="lua">
 
<source lang="lua">
 
soundData = love.sound.newSoundData( decoder )
 
soundData = love.sound.newSoundData( decoder )
Line 48: Line 49:
 
-- 復号化には時間が掛かります。
 
-- 復号化には時間が掛かります。
 
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 75:
 
{{#set:Since=000}}
 
{{#set:Since=000}}
 
== そのほかの言語 ==
 
== そのほかの言語 ==
{{i18n|love.sound.newSoundData}}
+
{{i18n (日本語)|love.sound.newSoundData}}

Latest revision as of 08:13, 22 July 2023

ファイルパス, File, または Decoder から SoundData を新規作成します。 サンプルレート、チャンネル、ビット深度を指定して SoundData を作成することもできます。

音声データは生の形式でメモリへ復号します。この方法において 3 分の楽曲では 30 MB のメモリを使用するため、効果音のような短い音声でのみ作成を推奨します。

関数

概要

soundData = love.sound.newSoundData( filename )

引数

string filename
読み込みを行うファイルのファイル名を指定します。

返値

SoundData soundData
新規 SoundData オブジェクト。

関数

概要

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()

関連


そのほかの言語