pyxen.Sound

Entityにコンポーネントとしてアタッチされる短いオーディオクリップです。

サウンドは完全にメモリに読み込まれます — ジャンプ、ヒット、アイテム取得などの短いエフェクトに使用してください。

オーディオのコンセプトについてはオーディオを参照してください。


コンストラクタ

Sound(filename)

必須の位置引数が1つ:プロジェクト内のWAVオーディオアセットの名前。


パラメータ

パラメータ型説明
filenamestrWAVアセットの名前

例

jump_sound = Sound("jump")

Soundのアタッチ

生成時:

sfx = world.spawn(sound=Sound("jump"))

または後から:

entity.sound = Sound("jump")

サウンドを割り当てると即座に再生が開始されます。


コンポーネントのプロパティ

entity.soundでアクセス:

プロパティ型R/W説明
loopboolR/Wループを有効にする
volumefloatR/Wゲイン(0.0以上にクランプ)
panfloatR/Wステレオパンニング(-1.0〜1.0)
timefloatR/W現在の再生位置(秒)
delayfloatR/W再生が始まるまでの無音の秒数
durationfloatR全体の長さ(秒)
finishedboolR再生が完了するとTrue

loop

entity.sound.loop = True

有効にすると、サウンドは終了後に自動的に再スタートします。


volume

entity.sound.volume = 0.5

0.0未満の値は0.0にクランプされます。


pan

entity.sound.pan = -1.0  # 完全に左
entity.sound.pan =  1.0  # 完全に右
entity.sound.pan =  0.0  # 中央

-1.0から1.0の範囲にクランプされます。


time

t = entity.sound.time
entity.sound.time = 0.25     # 最初の0.25秒を飛ばす

再生位置(秒)。代入するとその位置へシークします。末尾を超える値は末尾に丸められ、 再生が終わった音をシークすると再び鳴り始めます。


delay

entity.sound.delay = 0.002   # 2ミリ秒後に鳴り始める

音が鳴り始めるまでの無音の秒数です。time と違って何も飛ばしません。音は最初のサンプルから 始まり、始まるタイミングだけが遅れます。

同じ効果音を1フレームのうちに何度も鳴らすときに使うものです。 同じ波形のコピーが同じ サンプルから始まると位相がそろって加算されます。2つなら1.4倍ではなく2倍の振幅になり、10も 重なればどれだけ丁寧に音量を設定していてもミックスはフルスケールを超えます。数ミリ秒ずらす だけで相関は切れますし、その長さが隙間として聞こえることはありません。

ディレイが引き離すのはアタックです。短い打楽器的な音にはよく効きますが、持続音には 効果がありません。


duration

d = entity.sound.duration

読み取り専用。サウンドの全体の長さ(秒)。


finished

if entity.sound.finished:
    world.destroy(entity)

読み取り専用。サウンドの再生が完了するとTrue(loopがFalseの場合)。


フォーマット

サウンドアセットはWAVファイルでなければなりません。


よくあるエラー

ファイル名の指定なし

Sound()
ValueError: Sound must have a file

無効なアセット

Sound("nonexistent")

サウンドオブジェクトは作成されますが、再生は警告ログとともにサイレントに失敗します。