Wolfram ResearchProductsPurchasingServices & ResourcesAbout UsOur Sites
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.

Documentation / Mathematica / Mathematicaブック / Mathematicaの仕組み / グラフィックスとサウンド オブジェクトの構造  /

2.10.18 サウンド

1.9.12で関数や数値データからサウンドを生成する方法について説明した.本節では,サウンドオブジェクトがどういった構造を持ち,形成されているか説明する.

Mathematicaではサウンドはグラフィックスと同じように扱われる.事実,グラフィックスとサウンドを組み合せてサウンドトラック付きの画像を作ることも可能である.

グラフィックスにならい,サウンドもオブジェクトとしてとらえる.サウンドオブジェクトは Soundの頭部が作用した形で記述され,演奏音を表したサウンドプリミティブのリストから構成される.

サウンドオブジェクトの生成

1.9.12で触れたが, Soundオブジェクトを生成するには Play ListPlayの関数を使う.

関数をプレイすると,Soundオブジェクトが生成される.コンピュータに演奏機能が備わっていれば,関数値に対応した音が発生する.

In[1]:= Play[Sin[300 t + 2 Sin[400 t]], {t, 0, 2}]

Out[1]= -Sound-

Soundオブジェクトの構成を調べる.振幅の標本を生成するためにコンパイル済み関数を使うプリミティブ SampledSoundFunctionが入っている.

In[2]:= Short[ InputForm[%] ]

Out[2]//Short=Sound[SampledSoundFunction[<<3>>]]

サウンドプリミティブ

最も低次なレベルにおいて,サウンドとは音の振幅標本が連続したものとしてとらえられる. SampledSoundListでは,振幅は数値データのリストで与えられる.また, SampledSoundFunctionを使い関数からサウンドを生成すると,振幅データは関数に整数シーケンスを与え計算により生成される.ただし,実際の生成は演奏するときにだけ行われる.どちらのサウンド形態でも振幅値は から 1の範囲に入れておかなければいけない.

ListPlayを実行すると SampledSoundListのプリミティブが生成され,Playだと SampledSoundFunctionのプリミティブが生成される.デフォルトどおりコンパイル指定が有効なら(Compiled -> True)Playの生成する SampledSoundFunctionのオブジェクトは CompiledFunctionによってコンパイルされている.

各種のプリミティブでサウンドオブジェクトが形成できたら,次のステップは,それを実際に演奏することである.グラフィックスの場合と同じように,このステップにおける基本処理は,カーネルで 作ったサウンドオブジェクトを出力装置で演奏可能な低レベルのデータ形態に変換することである.演奏処理は Mathematicaのフロントエンドや外部プログラムで実行される.

低レベルのデータ表記において,サウンドは振幅を指定した16進数の列データからなる.低レベルに下げる前のカーネル内部処理において,振幅値はからの実数近似値で表されている.低レベルデータを生成するため振幅の実数データに「量子化処理」が施される.量子化処理でオプションの1つに SampleDepthのビット長設定がある.これは何ビットで標本を量子化するかを決めるものである.デフォルトの値は 8ビットで(SampleDepth -> 8),この設定だと振幅は256レベルの量子化が可能である.これは多くの用途で十分なレベル数である.

SampleDepthのビット長設定は Play ListPlay PlaySoundのどの関数でも使える.また,サウンドプリミティブに標本化レート(rate)と一緒にビット長(depth)を指定したいときは, rate, depthのリスト形式で指定する.

グラフィックスとサウンドオブジェクトは組み合せても使える.ただし,組み合せる際は,低レベルの構成上,競合しないよう設定しておく必要がある.すでに2.10.14で説明した通り,グラフィックスはPostScript記述で出力される.サウンドもまた,PostScript記述の特殊な関数形式で出力される.このため,出力装置のPostScriptインタープリタに演奏機能がなければ後者は無視されてしまう.

ストリームへのサウンド出力

グラフィックスだけでなくサウンドの出力(演奏)でも,また,両方を出力させるときも同じ表示関数Displayが使われる.

また, Play ListPlayの指定や Soundの指定では,オプション DisplayFunctionで最終出力処理をどう行うかを指示することができる. DisplayFunctionのデフォルト値は大域変数 $SoundDisplayFunctionである.後者は,通常, Displayの呼出し式として定義されている.



Any questions about topics on this page? Click here to get an individual response.Buy NowMore Information


 © 2008 Wolfram Research, Inc.  Terms of Use  Privacy Policy |
Sign up for our newsletter: