サウンド表現
「サウンド」では関数や数値データからサウンドを生成する方法について説明してある.ここでは,サウンドオブジェクトがどういった構造を持ち,形成されているか説明する.
Mathematica ではサウンドはグラフィックスと同じように扱われる.事実,グラフィックスとサウンドを組み合せてサウンドトラック付きの画像を作ることも可能である.
グラフィックスにならい,サウンドもオブジェクトとしてとらえる.サウンドオブジェクトは
Soundの頭部が作用した形で記述され,演奏音を表したサウンドプリミティブのリストから構成される.
| Sound[{s1,s2,...}] | サウンドプリミティブのリストからなるサウンドオブジェクトを生成する |
サウンドオブジェクトの生成
「サウンド」で触れたが,
Soundオブジェクトを生成するには
Playと
ListPlayの関数を使う.
関数を Playは, Soundオブジェクトを生成する.コンピュータに演奏機能が備わっていれば,関数値に対応した音が発生する. |
Out[2]//Short= |
| |  |
|
サウンドプリミティブ
最も低次なレベルにおいて,サウンドとは音の振幅標本が連続したもの,またはMIDIイベントの列としてとらえられる.
SampledSoundListでは,振幅は数値データのリストで与えられる.また,
SampledSoundFunctionを使い関数からサウンドを生成すると,振幅データは関数に整数シーケンスを与え計算により生成される.ただし,実際の生成は演奏するときにだけ行われる.どちらのサウンド形態でも振幅値は
-1から
1の範囲に入れておかなければいけない.
SoundNoteでは,音符のようなサウンドは周波数,期間,振幅,音符のスタイルを表す一連のMIDIイベントとして表現される.
各種のプリミティブで
Soundオブジェクトが形成できたら,次のステップは,それを実際に演奏することである.グラフィックスの場合と同じように,このステップにおける基本処理は,カーネルで作ったサウンドオブジェクトを出力装置で演奏可能な低レベルのデータ形態に変換することである.演奏処理は
Mathematica のフロントエンドや外部プログラムで実行される.
低レベルのデータ表記において,サウンドは振幅を指定した16進数の列データからなる.低レベルに下げる前のカーネル内部処理において,振幅値は
-1から
1の実数近似値で表されている.低レベルデータを生成するため振幅の実数データに「量子化処理」が施される.量子化処理でオプションの1つに
SampleDepthのビット長設定がある.これは何ビットで標本を量子化するかを決めるものである.デフォルトの値は8ビットで(
SampleDepth->8),この設定だと振幅は256レベルの量子化が可能である.これは多くの用途で十分なレベル数である.音符ベースのサウンドを低レベルで表現すると,MIDIイベントを時間で量子化したバイトストリームとすることができる.これは音符オブジェクトについてのさまざまなパラメータを指定する.時間の量子化は,プレイバックで自動的に決定される.
SampleDepthのビット長設定は
Playおよび
ListPlayのどちらでも使える.また,サウンドプリミティブに標本化レート(rate)と一緒にビット長(depth)を指定したいときは,
{rate, depth}のリスト形式で指定する.