概念

[備考開始]

この文書の主眼はサウンドパートストリーミングサウンドについて説明する事である為、委細はある程度省略し、厳密さを犠牲にしている箇所があります。

[備考終了]

1. サウンドデコーダ

サウンドデコーダ(SounDecoder.SoundDecoder)は、入力ストリーム(System.IO.Stream)の内容を扱いやすい形式に変換します。

サウンドデコーダは入力ストリームと一対一に対応します。その為、もし入力ストリームがファイルストリーム(System.IO.FileStream)であれば──つまり大抵の場合は、サウンドデコーダ = WaveやMP3などの音声ファイルと捉えてもらってもあまり問題はありません。

2. サウンドパート

サウンドパート(SounDecoder.Sounds.SoundPart)は、サウンドの構成要素です。ここで言うサウンドとは、一続きの音を指します。あるサウンドは効果音だったり、あるサウンドはオーケストラの演奏一曲だったり、またあるサウンドはループ再生するゲーム音楽だったりするかも知れません。とにかく、連続するひとまとまりの音、それをサウンドと呼びます。それを構成するのが前述の通り、サウンドパートです。

サウンドパートは、次のような属性を持っています。

Decoder
利用するサウンドデコーダ
StartEnd
サウンドデコーダが提供する音声データの中で有効化される範囲(の始まりと終わり)。この範囲に含まれる音声データのみが実際に使われる事となる。
NextPart
このサウンドパートが再生され終わったら次に再生されるべきサウンドパート

一つのサウンドは、このサウンドパートを一つあるいは複数組み合わせる事で表現されます。サウンドには必ず最初に再生されるサウンドパートが一つあり、もし複数組み合わせる場合はNextPartを次々と辿る事で表現されます。

3. スタティックサウンド

スタティックサウンド(SounDecoder.Sounds.StaticSound)は、サウンドパートの観点から言うと、サウンドパートを一つだけ持つサウンドです

スタティックサウンドにおいては、サウンドパートのNextPartプロパティは意味を持ちません。NextPartは常に自分自身であると仮定され、スタティックサウンドのLoopingプロパティは、このサウンドパートを繰り返し再生するか否かを表します。

4. ストリーミングサウンド

ストリーミングサウンド(SounDecoder.Sounds.StreamingSound)は、同様にサウンドパート基準で言うと、サウンドパートを複数持つサウンドです

ストリーミングサウンドの作成時には、最初に再生されるべきサウンドパートを渡します。再生が開始され、もし最初のサウンドパートが再生され終わると、そのサウンドパートのNextPartプロパティに設定されているサウンドパートが次に再生されます。そのサウンドパートも再生され終われば、更にそのNextPartプロパティを辿って……という事を繰り返します。

ストリーミングサウンドにおいてLoopingプロパティは、NextPartプロパティを辿るか否かを表します(スタティックサウンドにおいてもNextPartが常に自分自身であると捉えれば、同じ意味です)。また、Loopingがtrueの場合でも、NextPartがnull参照であれば、そこで再生は止まります。

5. パート終端通知

ストリーミングサウンドなどでは、サウンドパートの終端まで再生されると、パート終端まで再生された事が通知されます。これはEndOfPartイベントの発生によって実現されます。

[概念]
Published:2009-10-27T00:50:14+09:00
Last Modified:2009-10-27T00:50:14+09:00
Table of Contents:SounDecoder Sounds
Verified with:Valid XHTML 1.1
Copyright © 2009  E+X.