pyxen.Music

Entityにコンポーネントとしてアタッチされるストリーミングオーディオトラックです。

Musicはオンデマンドでデコードされるため、BGMやアンビエンスなどの長いトラックに適しています。

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


コンストラクタ

Music(filename)

必須の位置引数が1つ:プロジェクト内の音楽アセットの名前(拡張子は付けません)。


パラメータ

パラメータ型説明
filenamestr音楽アセットの名前(拡張子なし)

例

theme = Music("theme")

Musicのアタッチ

生成時:

bgm = world.spawn(music=Music("theme"))

または後から:

entity.music = Music("theme")

ミュージックを割り当てると即座に再生が開始されます。


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

entity.musicでアクセス:

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

loop

entity.music.loop = True

有効にすると、トラックは終了後に自動的に再スタートします。BGMでは一般的です。


volume

entity.music.volume = 0.5

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


pan

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

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


time

t = entity.music.time

読み取り専用。現在の再生位置(秒)。


duration

d = entity.music.duration

読み取り専用。トラックの全体の長さ(秒)。


finished

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

読み取り専用。トラックの再生が完了するとTrue(loopがFalseの場合)。


フォーマット

音楽アセットには、OGG Vorbis(.ogg)、MIDI(.mid、.midi)、またはトラッカーモジュール — ProTracker(.mod)、FastTracker II(.xm)、Impulse Tracker(.it)、Scream Tracker 3(.s3m)— を使用できます。

アセットはベース名で検索されます。Music("theme") は theme.ogg、theme.mod など、プロジェクト内に存在する拡張子のファイルを見つけます。拡張子を渡すのが最もよくある間違いです。Music("theme.ogg") は theme.ogg.ogg を探して例外を送出します。

トラッカーモジュールは、同じ曲のOGGが数メガバイトになるところを数キロバイトで収まることが多く、構造上シームレスにループします — 小さなゲームに最適です。

Sound(WAV、完全にメモリに読み込み)と異なり、Musicはストリーミングされオンデマンドでデコードされます — 長いオーディオにより適しています。


よくあるエラー

ファイル名の指定なし

Music()
ValueError: Music must have a file

無効なアセット

Music("nonexistent")
Music("theme.ogg")     # 拡張子はファイル側に付けます。名前には含めません
ValueError: Music 'nonexistent' not found. Use the asset name without its extension (.ogg, .mid, .mod, .xm, .it, .s3m).