# 14.4 `sunau` -- Sun AUファイルの読み書き

`sunau`モジュールは、Sun AUサウンドフォーマットへの便利なインター フェースを提供します。このモジュールは、`aifc`モジュールや `wave`モジュールと互換性のあるインターフェースを備えています。

オーディオファイルはヘッダとそれに続くデータから構成されます。 ヘッダのフィールドは以下の通りです：

フィールド | 内容
--- | ---
magic word | 4バイト文字列 "`.snd`"。
header size | infoを含むヘッダのサイズをバイト数で示したもの。
data size | データの物理サイズをバイト数で示したもの。
encoding | オーディオサンプルのエンコード形式。
sample rate | サンプリングレート。
# of channels | サンプルのチャンネル数。
info | オーディオファイルについての説明をASCII文字列で示した もの（null バイトで埋められます）。

infoフィールド以外の全てのヘッダフィールドは4バイトの大きさです。 ヘッダフィールドはbig-endianでエンコードされた、計32ビットの符合なし整数 です。

`sunau`モジュールは以下の関数を定義しています：

`open`( | file, mode)

  fileが文字列ならその名前のファイルを開き、そうでないならファイル のようにシーク可能なオブジェクトとして扱います。modeは以下のうち のいずれかです。

  `'r'`
    読み込みのみのモード。
  `'w'`
    書き込みのみのモード。
  読み込み／書き込み両方のモードで開くことはできない ことに注意して下さい。

  `'r'`のmodeは`AU_read`オブジェクトを 返し、`'w'`と`'wb'`のmodeは`AU_write`オブジェク トを返します。

`openfp`( | file, mode)

  `open()`と同義。後方互換性のために残されています。

`sunau`モジュールは以下の例外を定義しています：

exception `Error`
  Sun AUの仕様や実装に対する不適切な操作により何か実行不可能となった時に発 生するエラー。

`sunau`モジュールは以下のデータアイテムを定義しています：

`AUDIO_FILE_MAGIC`
  big-endianで保存された正規のSun AUファイルは全てこの整数で始まります。 これは文字列"`.snd`"を整数に変換したものです。

`AUDIO_FILE_ENCODING_MULAW_8`
`AUDIO_FILE_ENCODING_LINEAR_8`
`AUDIO_FILE_ENCODING_LINEAR_16`
`AUDIO_FILE_ENCODING_LINEAR_24`
`AUDIO_FILE_ENCODING_LINEAR_32`
`AUDIO_FILE_ENCODING_ALAW_8`
  AUヘッダのencodingフィールドの値で、このモジュールでサポートしているもの です。

`AUDIO_FILE_ENCODING_FLOAT`
`AUDIO_FILE_ENCODING_DOUBLE`
`AUDIO_FILE_ENCODING_ADPCM_G721`
`AUDIO_FILE_ENCODING_ADPCM_G722`
`AUDIO_FILE_ENCODING_ADPCM_G723_3`
`AUDIO_FILE_ENCODING_ADPCM_G723_5`
  AUヘッダのencodingフィールドの値のうち既知のものとして追加されているもの ですが、このモジュールではサポートされていません。