/* *** wavfile.h: WAV ファイル処理用の共通ヘッダ (2015/10/28-11/12 改:YH) *** * **** WAVFILE 構造体について * * 基本的には WAV ファイルに含まれている情報を格納 * (ただし2次的に得られる情報などは整理してある) * * PCM format、チャネル数 1 または 2、1 byte / 2byte サンプルに対応 * * 波形データは(サンプルバイト数に関わらず)-1.0〜+1.0 の double に変換して利用 * 変換範囲は -127〜+127(1byte)、-32767〜+32767(2byte) で、 * -128 は -127 と、-32768 は -32767 と同一視する。 * * この double データの配列を以下のフィールド変数に収める。 * * モノラル(1チャネル)は Track * * ステレオ(2チャネル)は TrackL(左)と TrackR(右) * ただし Track と TrackL とは実質的に同一で、常に同じ配列を指す。 */ #include #include #include #include #include #define AMP1 SCHAR_MAX // 8-bit 最大振幅 (=127) #define AMP2 SHRT_MAX // 16-bit 最大振幅 (=32767) #define XAMP1 SCHAR_MIN // 8-bit 除外値 (=-128) #define XAMP2 SHRT_MIN // 16-bit 除外値 (=-32768) #define FORMATSIZE 16L // format チャンクの標準サイズ #define CHUNKOFFSET 28L // format チャンクの標準オフセット #define F_PCM 0x0001 // PCM format #define CD_SAMPLING 44100 // CD のサンプリングレート(デフォールト) #define MONAURAL 1 // 1 チャネル #define STEREO 2 // 2 チャネル typedef struct { /* wav ファイル情報の構造体 */ char *Filename; // 入出力ファイル名 (****.wav) int FormatID; // PCM format (=1) のみ int Channels; // チャネル数 (1 or 2 のみ) int SamplingRate; // サンプリングレート (default: 44100) // int BytesPerSec; // (除外)= SamplingRate * BytesPerBlock // int BytesPerBlock; // (除外)= Channels * BytesPerSample // int BitsPerSample; // (除外)bits per sample (only 8 or 16) int BytesPerSample; // サンプル当たりバイト数 (1 or 2 のみ) int Blocks; // データ数(ブロック数) double *Track; // データ配列(実数値:モノラル) double *TrackL, *TrackR; // データ配列(実数値:ステレオ) } WAVFILE; /* *** グローバル変数、関数群 *** */ extern int dumpfileinfo; // 読み込んだファイル情報のダンプ extern int rangeflag; // 値オーバーのときの警告メッセージの表示レベル extern WAVFILE *wavalloc(); // グローバル関数群 extern WAVFILE *wavread(); //  引数、機能については wavfile.c 参照 extern WAVFILE *wavwrite(); extern WAVFILE *wavwrite_monaural(); extern WAVFILE *wavwrite_stereo(); // extern void wavopen(); // extern void wavclose(); // extern void wavdata();