名称 wavno バージョン 1.4 作者 itouh Time-stamp: "Jan 18 2003" 概要 WAVファイルに対して、音量のノーマライズと ファイル先頭/末尾の無音カットをおこなう 説明 読み込めるファイル形式は、16bit ステレオ 無圧縮の WAV ファイルのみ。 (8bit や モノラルのファイルを読み込むとエラーが表示され終了する) サンプリング周波数に関しては、44100 Hz, 48000 Hz, 32000 Hz そのほか どれでも対応している。 ひとつの WAV ファイルだけ読み込める。出力ファイルは 「読み込んだファイル名.wav」という名前になり、カレントディレクトリに 保存される。 ファイル先頭の無音と末尾の無音カットをおこなう。ファイル先頭に 関しては、ファイル開始から 10 秒以内に 1.5 秒以上の無音区間があれば そこ以前は無音区間として削除する。 (StarDigio が曲間に 1 秒ほどのホワイトノイズを入れることがあり、 それがファイル開始に入ってしまうことがあるので、その対策) ノーマライズをおこなう。ノーマライズとはここでは、WAV ファイルに 収録されている音量レベル最大値(ピークレベル)を、WAV フォーマット 16bit の範囲内で最大になるよう、音量を全体的にアップすることである。 ただし、実際には最大の 92% の音量にしている。100% にしないのは、 聴くときにエフェクトをかけてもレベルオーバーしないためのマージンを とっておくため。 元ファイルに最大の 85% 以上の音量がある場合は、ノーマライズしない。 使用方法 コマンドラインで使用するツール。 $ wavno digio456-00.wav と入力すると、ファイルを読み込み、処理して、カレントディレクトリに 書き出される。 wrote 'digio456-00.wav.wav' と表示される。 ファイル wavno.c ソースコード wavno.exe Windows で動作する実行ファイル README.txt 説明ドキュメント (このファイル) CHANGES.txt 変更履歴ドキュメント 実行ファイル wavno.exe は、Windows98SE + gcc 3.2(MinGW 2.0.0) で コンパイルと動作確認をおこなった。Windows95/Me/2000/XP でも 動作すると思われる。 コンパイルオプションの例: $ gcc -march=i586 -O2 wavno.c -o wavno.exe ソースコード wavno.c は、Linux 2.4.18 + gcc 2.96 でも コンパイル、動作確認している。 補足 このコマンドの読み方は、「ウェーブノー」「ウェーブの」あたりを推奨。 動作環境は、 Windows98SE Linux 2.4.18 (RedHatLinux7.3) 以上で動作することを確認した。 Intel系(Little Endian) 32bit CPU での動作しか考慮していない。 Big Endian の CPU (Macintosh PowerPC等) では、そのままでは動作しない。 動作速度だが、内部動作が 読み込み 1回目 音量と無音位置のチェックをおこなう 読み込み 2回目 ↓音量変換と無音位置指定 書き込み となっているので、普通のファイルコピーよりは遅い。 ただしファイルすべてをメモリに読み込める場合は、 読み込みを 1 回しかおこなわない。 巨大な WAV ファイルも扱える。700MB (StarDigioで 1時間) の 大きさの WAV ファイルならテストした。途中経過が表示されないため 遅く感じるが、70MB WAV ファイルの 10倍という計算どおりの時間しか かかっていないはず。 2.1GB (StarDigioで 4時間) のファイルは試していないが、たぶん扱える。 CS衛星放送の音楽専門チャンネル StarDigio のために作成した。 このチャンネルは音量が小さいため、音量を拡大する必要があった。 しかし適当なツールがなかったため、自分で作成した。 ついでに無音カットもおこなうことにした。 このツールには、指定できるコマンドラインオプションや 設定できる項目はない。設定を変更するには、ソースコードの値を 直接書き換える必要がある。 このソフトの無音カット機能は、音量値がほぼ 0 のものだけを無音と 認識する。実質的にデジタル入力専用である。無音と認識する範囲を 広げたい場合は、ソースコードの VOL_MIN の値を大きくすると いいかもしれない。VOL_MIN に指定できる値は 0〜32767。 このソフトのノーマライズは、ただ音量を上げるだけのもの。音質には なんの変化も与えない。 ライセンス フリーソフトです。詳細はソースコードを参照。 -- itouh