☆ WAVEFLT とは

「WAVEFLT」は Win32,Linux 用の Wave フィルタです。 メモリを使用せずに HDD 上のデータを直接扱います ので最大 4G までのファイルを扱えます(Linux は 2G)。

もしバグ等を発見したら是非お知らせ下さい。


☆ 動作環境

Win32, Linux(x86)?

Linux 版のバイナリはソースから作成して下さい。ただしソースの改造が少し必要だと思います。


☆ チュートリアル

はじめにコマンドプロンプトを起動して下さい。 win9x なら doskey コマンドと併用すると便利です。

waveflt とだけ打つと書式が表示されます。

バンドパスフィルタを使って、1000-9000 hz の範囲の音を取り出すには次のように打ちます。

waveflt -bpf 1000 9000 d:\tmp\input.wav d:\tmp\out.wav

設定は設定ファイルに書いておくと便利かもしれません。例えば アーカイブに付属している設定ファイルのサンプル wfltsample.txt には

# WAVEFLT サンプル
# 行の先頭に「#」を付けるとその行はコメントになります

-bpf 1000 9000
-normal 0.8

# ここまで

と書かれていますが、コマンドラインで

waveflt -f wfltsample.txt d:\tmp\input.wav d:\tmp\out.wav

と打つと

waveflt -bpf 1000 9000 -normal 0.8 d:\tmp\input.wav d:\tmp\out.wav

を実行したのと同じ意味になります。

その他にもイコライザとかコンプレッサとか色々設定できますので詳しくは オプション一覧を参考にしてください。


☆ データを処理する順番

入力 → DC オフセット(手動/自動)補正 → 先頭削除、無音分割処理 → 左右チャンネルミキシング → ファイルミキシング → サイン波合成 → 時間分割処理 → 適応フィルタ → イコライザ → FIR → IIR → メジアンフィルタ → 位相逆転 → リサンプリング -> コンプレッサ → → ボリューム調整 → 出力

の順にデータは処理されます。ノーマライズ、フェードイン、アウト処理は全てのデータが フィルタに通された後に行われます。


☆ 標準入出力時の機能制限について

音声データの入出力先として標準入出力、及びサウンドデバイスを指定した場合は 下の各オプションの指定が無効になります。詳しくは stdin, stdout, -pipeout, -waveout の説明を参照して下さい。

-cut -cutm -cuttail -fin -fout -normal -adptrain -nosound* -split*
stdin ×××(1)×
stdout ××(2)××
pipeout ××(2)
waveout ×××××
(1): 出力先がハードディスクの場合有効(下の注意も参照)
(2): -cut,-cutm,-cuttail オプションのみと併用した時のみ有効(下の注意も参照)


☆ その他注意点

(1) -nosound*, -split* 等を指定し(つまり途中で出力を切り替える処理を行う)、かつ 出力先が -pipeout の時にはノーマライズ処理( -normal) を行えません。 下の注意 2 も参考にしてください。

(2) stdin, stdout, -pipeout 指定時のノーマライズ処理(-normal)について

WAVEFLT はストリーム処理を前提にして設計してあり、 ストリーム処理ではピークのサーチが出来ないため、 stdin , stdout , -pipeout オプション指定時には ノーマライズ処理に多少の制限がかかります。

stdin と stdout 及び -pipeout を同時に指定した場合、 ピークのサーチが出来ないためにノーマライズ処理は出来ません。

入力が stdin で出力先がハードディスク上のファイルの時はノーマライズ可能です。

入力がハードディスク上のファイルで、出力が stdout 及び -pipeout の場合には、 -normal オプションのみ、あるいは 基本設定系のオプション(-silent など)、及び 切り出し系のオプション(-cut,-cutm,-cuttail)と併用した時のみノーマライズが有効に なります。他のオプション(例えば -lpf,-split など)を指定すると フィルタ処理後のピークのサーチが出来ないためにノーマライズは無効になります。

ローパスフィルタなどのオプションとノーマライズを併用したい場合は 一度ハードディスク上に出力してから -exec コマンドで waveflt を別にもう一つ起動して行ってください。 例えば (応用例2) 無音判定分割 + ノーマライズ + OGG 化 を参考にしてみてください。

(3) -dyn 指定時にはノーマライズ処理 -normal) を行えません。

(4) 入力ファイルと出力ファイルが同名の場合は入力ファイルを *.bkp にリネームしてから実行します(WIN32 のみ)。

(5) 飽和について

飽和とは演算結果のデータの値が 16 bit(又は 8bit)で表現できる範囲を越える 事で、これが生じるとクリッピングノイズが起こります。

もし飽和が生じた場合は編集中、および終了後に適切な -vol オプションの値が表示 されますので-vol オプションを指定してデータを再びフィルタにかけて下さい。 詳しくはオプション一覧の-nsat , -vol オプションの項を参照して下さい。

またリアルタイムフィルタリング録音の時など、-vol の値がわからない場合は 入力音声の音量レベルを低めにして、-dyn オプションでコンプレッサをかけると いう手法が効果的です。詳しくは -dyn の項を参照して下さい。


☆ (例1) データを OGG に直接エンコード

以下の説明は Windows 版対象です。Linux の場合は普通に waveflt input.wav stdout | 〜 の様にパイプを使用してください。

パイプ出力機能(-pipeout)と oggenc を利用して、フィルタに通したデータを 中間 Wave ファイルを作成せずに直接 ogg 形式にエンコードできます。

例えばローパスフィルタをかけつつ ogg にエンコードしたい場合は

(1) oggenc.exe を waveflt.exe と同じフォルダに置く
(2) waveflt.exe と同じフォルダに

## setting.txt
-silent
-autoofs
-iir_lpf 4000
-pipeout "oggenc.exe -b 128 - -o %^%a%^"
## 設定終わり

という設定ファイル(setting.txt)を書いて保存する。

(3) コマンドプロンプトで

waveflt -f "setting.txt" input.wav output.ogg

と打つと input.wav がフィルタに通されて output.ogg が作成される。

なお CPU パワーの低いマシンではうまくエンコードされない場合があります。その場合 は -pipebuf オプションでパイプのバッファサイズを変更してみて下さい。


☆ (例2) 無音判定分割 + ノーマライズ + OGG 化

入力音声の無音部を判定してファイルを分割し、 さらにノーマライズして OGG にエンコードする例です(windows 版のみ)。

WAVEFLT の仕様上、 -nosound オプションと -normal オプションは 出力先を -pipeout で指定した場合は同時に使用できない ので一旦 -nosound で分割した中間 WAVE ファイルを 作成して -exec オプションで 2 段目の WAVEFLT を起動して改めてノーマライズ + OGG 化します。

-exec オプションで起動した 2 段目の WAVEFLT では中間ファイルを作成せずに 直接 OGG エンコードを行います。

(1) oggenc.exe を waveflt.exe と同じフォルダに置く
(2) waveflt.exe と同じフォルダに下の setting.txt 、setting2.txt 
という 2 つの設定ファイルを作成する。

--------

## setting.txt ここから
## 1 段目の WAVEFLT の設定ファイル
## 分割を行って 2 段目の WAVEFLT を起動
-silent
-autoofs
-nosound 0.5 128 
-exec "waveflt -f %^setting2.txt%^ %^%a%^ %^%a%^"
## setting.txt ここまで

--------

## setting2.txt ここから
## setting.txt の -exec オプションで起動する 2 段
## 目の WAVEFLT の設定ファイル
## ノーマライズして OGG エンコード して中間ファイル削除
-silent
-normal 0.8
-pipeout "oggenc -b 128 - -o %^%a%^"
-del
## setting2.txt ここまで

--------

(3) コマンドプロンプトで

waveflt -f "setting.txt" input.wav output.ogg

と打つと無音部で分割されて
output000.ogg , output001.ogg …
というファイルが作成される。

うまく分割されない場合は setting.txt の -nosound の数字を 調整してみてください。

setting2.txt の -del オプションをコメントアウトすると 中間ファイルを削除しません。中間ファイルは上の例の場合は output000.bkp , output001.bkp … というファイルになります。 この中間ファイルの拡張子を .wav に変更すると(ノーマライズしていない) WAVE 形式ファイルになります。

また OGG 形式にエンコードしない場合は setting2.txt の -pipeout オプション をコメントアウトして

waveflt -f "setting.txt" input.wav output.wav

と出力ファイルの拡張子を .wav に変更して実行してください。

(詳細説明)

1 段目の WAVEFLT で -nosound オプションで無音分割されて output000.ogg , output001.ogg …という「WAVE 形式の」 中間ファイルが作成されます。ここで分割されて ファイルが切り替わる度に -exec オプションによって 2 段目の WAVEFLT が起動されるのですが、 %^%a%^ %^%a%^ の様に入力と出力ファイル名を同じに指定しているので 中間ファイルが output000.bkp , output001.bkp …とリネームされます。 後は ローパスフィルタ + ノーマライズ + OGG 化 して -del オプションで中間ファイルが 削除されます。


☆ 置換規則一覧 & 置換例

ロック音の場合は PIPE のコマンド、録音前後コマンド、ファイル名で、WAVEFLT の場合は 出力ファイル名、-pipeout、-exec オプション等で指定できる置換文字の一覧です。

文字列置換規則表 (ロック音、WAVEFLT 共通)
%d出力ファイルのドライブ (例) c:
%p出力ファイルのパス (例) \bin\lockon\
%f出力ファイルのファイル名(拡張子除く) (例) out
%e出力ファイルの拡張子 (例) .wav
%aパスを含むファイル名(%a = %d%p%f%e) (例) c:\bin\lockon\out.wav
%%%
%1%1 (waveflt の場合は -udef1) で指定したユーザー定義文字列
%2%2 (waveflt の場合は -udef2)で指定したユーザー定義文字列
%3%3 (waveflt の場合は -udef3)で指定したユーザー定義文字列
%Y年 (下二桁 例えば 2002 年の場合は 02 に置換)
%M
%D
%H
%N
%S
%W曜日

(注意) %Y,%M,…%W などの時刻はロック音の場合は録音を開始した時間、 waveflt の場合は waveflt が起動した時間、または -split や -nosound* などで 分割が行われた時間がセットされます。

文字列置換規則表 (ロック音 のみ)
%Lロック音のウィンドウハンドル
scmpx 〜 stdin "%a" fstdin -dos -hide -command "scmpx 〜 dummy.dat %^%a%^"
wm8eutil -input stdin -output "%a" 〜 fstdin -v -dos -command "wm8eutil -input dummy.dat -output %^%a%^ 〜"

文字列置換規則表 (WAVEFLT のみ)
%^"
scmpx 〜 stdin %^%a%^ fstdin -dos -hide -command "scmpx 〜 dummy.dat %^%a%^"
wm8eutil -input stdin -output %^%a%^ 〜 fstdin -v -dos -command "wm8eutil -input dummy.dat -output %^%a%^ 〜"

(ロック音での置換例1) 

ファイル名が c:\tmp\out.wav の時

%d           -> c:
%p           -> \tmp\
%f           -> out
%e           -> .wav
"%a"         -> "c:\tmp\out.wav"
"%d%p%f%e"   -> "c:\tmp\out.wav"
"%d%p%f.ogg" -> "c:\tmp\out.ogg"
"e:%pTest%e" -> "e:\tmp\Test.wav"

(ロック音での置換例2) 

現在時刻が 2001/10/4  16:32:10 の時

"c:\tmp\out%Y-%M-%D-%H-%N-%S.wav"   -> "c:\tmp\out01-10-04-16-32-10.wav"

(WAVEFLTの例1) 現在時刻が 4:10 の時、waveflt input.wav "%H-%N.wav" を実行すると 4-10.wav が出力される。

(WAVEFLTの例2) waveflt -pipeout "oggenc - -o %^%a%^" input.wav out.ogg を実行すると out.ogg が出力される。

(WAVEFLTの例3) waveflt -udef1 "def1" -pipeout "oggenc - -o %^%d%p%1%e%^" input.wav out.ogg を実行するとdef1.ogg が出力される。

(WAVEFLTの例4) cat input.wav | waveflt -split 60 -pipeout "oggenc - -o %^%d%pout-%H-%N-%S%e%^" stdin out.ogg を実行すると 分割時間がファイル名になる(リアルタイム入力などで使用する)。


☆ バグレポート等連絡先

作者 : 東海林 智也
MAIL :
tokai@main.eng.hokudai.ac.jp
URL : http://isp5.main.eng.hokudai.ac.jp/~tokai/


☆ 著作権、免責等について

このプログラムはフリーソフトソフトウェアであり GPL に従って再頒布 または変更することができます。詳細についてはGNU 一般公有使用許諾書 をお読みください。

また本プログラムの使用によって生じたいかなる損害、問題等に作者は関 知しない事にします。使用者の責任の上で実行する様にして下さい。

Copyright (c) 1999-2002 Tomoya Tokairin


☆ ソースについて

開発言語は VC++6.0pro(SP3)
開発機種は 自作機(Windows 2000)

です。

ソースは連絡先に置いてあります。

本プログラムのすべて、または一部を GPL に従って再頒布または変更する ことができます。詳細についてはGNU 一般公有使用許諾書をお読みください。


☆ 参考文献

CAI ディジタル信号処理、小畑秀文、幹康、コロナ社、1998
ディジタル信号処理、貴家仁志、昭晃堂、1997
ディジタル・フィルタ、宮川洋、今井秀樹、科学技術出版社、1980
ディジタル信号処理の基礎、辻井重男、電子情報通信学会、1988
Numerical Recipes in C 2nd Edition, Cambridge univ. press, 1992
その他図書館にあった本色々
論文色々
学会でもらった資料色々
Web 上の情報色々

☆ 更新履歴

2002/4/20  Ver 0.989

-vol だけを指定してときにきちんと音量が調整されないバグを修正。
-iir_hpf, -iir_bpf オプション追加。
-rsmp の仕様を変更。


2002/4/6  Ver 0.988

軽いテスト。
マニュアル更新。
特にバグ報告も無いみたいなのでリリース版に格上げ。


2002/3/30  Ver 0.988b-final

-info 指定時にピーク音量値と平均音量値と RMS を表示するようにした。
-normal_db オプション追加。
-normal_avg オプション追加。
-normal_avg_limit オプション追加。
-normal_rms オプション追加。
-normal_rms_limit オプション追加。
-normal_avg、-normal_rms 指定時にデフォルトでリミッタも作動させるようにした。
-vol で指定できる数字を 100 まで上げた。
-nosound_detail2 オプション追加。
-nosound_stop オプション追加。
ソースの整理整頓。
マニュアル更新。
-nosound* の処理をいじったので -split* と -nosound* を同時に使った時のテストをした。
その他軽いテスト。


2002/3/1  Ver 0.988b2

-mixfile オプション追加。
-cutm* の最大ブロック数を 64 に増やした。
マニュアルに「置換規則一覧 & 置換例」表記


2002/1/26  Ver 0.988b

-split* と -nosound* を同時に使用できるようにした。
-nochkhdd オプション追加。


2002/1/21  Ver 0.987

テストして軽いバグフィックス。
表示周りを少し見やすくした。


2001/12/11  Ver 0.987b3

(ewc.exe)
機能とともにファイルサイズも増えてきたので、とりあえず WAVEFLT と
分離して配布することにした。


(waveflt.exe)
-split* -nosound* 指定時でも条件付でノーマライズやフェードイン、アウトできるようにした。
stdin,stdout 指定時のノーマライズの動作の仕様がごちゃごちゃになっていたのを整理した。
-addspc と -fin,-fout を同時に指定すると変になるバグを修正。
-outfile_fm オプションを追加(隠しオプション)。



2001/12/7  Ver 0.987b2

(ewc.exe)
無音検索ルーチンにバグがあったのを修正。
ジャンプダイアログに「分割マークセット」、「主マークの位置から最適値を推定」ボタンを追加。
ロードファイル名とセーブファイル名を別々に設定保存するようした。
ソースを少し整理。

(waveflt.exe)
ルーチンを改良して -split* でバッファサイズよりも短い時間を指定できるようにした。
-split* をすると -cut で指定した終了時間が無視されるバグを修正。


2001/12/6  Ver 0.987b

(ewc.exe)
編集メニューに「分割」機能を追加。

(waveflt.exe)
-splitbm オプションを追加(隠しオプション)。
-rsmp オプション追加。
バグフィックス少々。



2001/12/5  Ver 0.986b2

ちょっとだけ軽いバグフィックス。


2001/11/30 Ver 0.986b

-exec コマンドで wm8eutil.exe などを起動すると fstdin.exe を通して起動してしまうバグを修正。
-iir_lpf、-demp、-iirout オプション追加。


2001/11/20 Ver 0.985

軽いバグフィックス。
e-wc を少し改良。
ソース整理。
テストして特に問題なさそうだったのでリリース版にした。



2001/11/18 Ver 0.985b

e-wc の仕様を大幅変更。
GUI でのオプション指定を削って自分でオプションを書く様にした。

-addsin オプション追加。
-nosignal オプション追加。
-split* で指定できる時間を 20 時間まで増やした。
ソースの整理。


2001/11/15 Ver 0.984b

-headcut2 廃止(一応互換性のために内部的には残す)
-nosnd3 完全廃止
-headcutting 、-nosound、-nosound_detail オプション追加


2001/11/14 Ver 0.983b

ルーチンを作り直して、ほったらかしにしていた -nosplit*, -split* 関係の大量の
バグをフィックス(やっぱり普段使ってない機能はバグ報告が無い限り直す気がしないね)。
今まで -split* はバッファの切れ目でファイルを切り替えていたのを、きちんと計算して正しい時間で分割するようにした。
メモリの確保でヒープと malloc が混在していたので malloc に統一したらソースが見やすくなった。
ついでに無駄な変数とか減らしてソースの整理。
その他バグフィックス色々。


2001/11/13 Ver 0.982b

-firout や -eqout や -dynout 指定時に、いちいち処理後にフィルタ特性を出力するのでは
なくて、すぐに特性を出力して終了するようにした。
-cut や -split などで 時:分:秒 の時間表記が出来るようにした。
-mdct, -mdctln オプション追加
いまいち具合が良くないので -fft, -dwt オプション廃止
-split3 オプション追加


2001/11/11 Ver 0.981b

-exec_nowin オプション追加
-headcut,-nosnd オプション廃止(一応互換性のために内部的には残す)
-normal オプションの値を 1.0 まで指定できるようにした。
-nosnd3 オプション追加
-fft オプション追加
-fftln オプション追加


2001/11/6 Ver 0.980b

-addspc オプション追加
-eqlog オプション追加
-eqln オプション追加
-dwt オプション追加
-dwtln オプション追加
-nosnd とフィルタ処理を同時に指定すると先頭にプチノイズが
入る時があるという結構致命的なバグを修正。
その他、軽いバグフィックス。


2001/10/28 Ver 0.979

-split2 オプション追加



2001/10/20 Ver 0.978

-nv オプションがエラーになるバグを修正
-headcut2 オプション追加
-outfile オプション追加
sleep.exe を付属


2001/10/7 Ver 0.977

テストしてリリース。



2001/9/26 Ver 0.977beta

-del オプション追加。
-exec オプション追加。
-nv オプションを廃止して -silent オプション追加(-nv は互換性のため残す)。
-udef1,-udef2,-udef3 オプション追加。
置換文字に %a,%1,%2,%3 追加。
入力ファイル名と出力ファイル名が同じ時は入力ファイルを *.bkp に変更
するようにした(win32のみ)。

ファイル分割録音でファイル名が

out-0.wav
out-1.wav
   :

となるところを

out-000.wav
out-001.wav
   :

とするようにした。

e-WC でセーブファイルに元のファイル名と同じファイルを指定できない
バグを修正(ver 0.976a)


2000/12/11 Ver 0.976

-split のテスト(24 時間録音しつづけた)して問題ないことを確認。
ヘルプ更新
特にバグ報告も無いみたいなのでリリース版にした。


2000/11/17 Ver 0.976b4

-endless オプション追加


2000/11/15 Ver 0.976b3

-split* オプションを選択しなくても出力が勝手に分割される激烈バグを修正。
# if(bSplit 〜 を入れるの忘れてた…

ついでなので -splitkbr オプション追加


2000/11/14 Ver 0.976b2

-splitkbyte オプション追加


2000/11/9 Ver 0.976b

-split オプション追加
無音部でファイルを切り替えるときにたまに終了するバグを修正
ヘルプをちょっと更新


2000/11/6 Ver 0.975b

Linux で make が通るようにした(コンパイルオプションは適当)
ヘルプをちょっと更新


2000/8/19 Ver 0.974b

-cuttail オプション追加
-info オプション追加


2000/8/7 Ver 0.973b

-nosnd2 オプション追加。
ちょっと必要になったのでテキスト出力(-text)追加。
少しバグを修正。-nosnd 指定時に先頭にプチノイズが入る時がある
バグがひょっとしたら直ったかも。


2000/6/10 Ver 0.972

メジアンフィルタ(-med) 追加(いまいち効果なし)
Phase Invert (-phinv) 追加(これもいまいち意味なし)

一部の関数を修正して Linux とかでコンパイルしようとするとエラーが出る
問題を少し減らした。


2000/5/10 Ver 0.971

stdin 指定時にデータが少し欠けるバグを修正
-headofs オプション追加
その他細かいバグ修正

Linux とかでコンパイルしようとするとエラーが出るのに気が付いたけど、
デバッグが面倒なので次のバージョンアップ時に廻すことにした

# 全然報告が無い所をみると Linux で使っている人はいないんだろなあ


2000/4/17 Ver 0.97.1

マニュアルに「標準入出力時の機能制限について」を追加。

(e-wc)
MP3 再生の時に再生デバイスを指定出来るようにした。
(VBMP3.dll Ver 1.601 以降)


2000/4/4 Ver 0.97

-autoofs で 5 分で学習を打ち切るようにした。
表示が変だった所を修正。
パイプモードで実際のファイルサイズも表示するようにした。


2000/3/10 Ver 0.96

-nosnd オプション追加
-headcut オプション追加
データの出力サイズだけでなく秒数も表示するようにした。


2000/2/19 Ver 0.955

このバージョンから e-WC を付属させる事にした。
waveout,-device オプション追加(windows 版のみ)。
ctrl+break に対応するため ctrl+c の処理を SetConsoleCtrlHandler() 
ですることにした(windows 版のみ)
設定ファイルの読み込みの所のバグを修正
その他細かいバグ修正
Win2k 製品版でビルド
Win2k 製品版で動作確認。


(e-wc)

試聴ボタン追加に伴い設定用ダイアログのレイアウト変更。
オフセット自動補正機能をサポート
VBMP3.DLL による MP3 再生をサポート
その他細かいバグ修正


2000/1/15 Ver 0.953

設定ファイルにコメントを書けるようにした。
マニュアルを HTML 化した。
Win2kRC2 でビルドした。
Win2kRC2 で動作確認した。


99/12/17 Ver 0.952

ヘッダチェックの強化。
旧バージョンとの互換性のため入力の所に - も使えるようにした。
e-WC との連携用に -fmap オプション追加(隠しオプション)。


99/12/7 Ver 0.951

フィルタの畳込みのところの処理の所に軽いバグがあったので修正。
ダイナミクス特性の出力の所にやばいバグがあったので修正。
オフセットの自動修正機能の強化。
旧バージョンとの互換性のため -reg オプションも使えるようにした。


99/12/5 Ver 0.95

イコライザをつけた。
オフセット(直流成分)ずれ自動修正機能をつけた。
コンプレッサの処理の部分を改良。
適応フィルタを少し高速化(約 1.2 倍)
パイプのところで EOF 送るの忘れてたので直した。
パイプが切断されてないかチェックするようにした。
パイプのバッファサイズを変更できるようにした。
Ctrl+C 押した時の処理をちゃんとした。
もうちょいソースを整理(まだまだ汚い)。
その他細かいバグの修正。


99/11/26 Ver 0.90b2

-p: オプションを廃止して -pipeout オプションにした。


99/11/25 Ver 0.90b

多重きり出し機能を付けた。
設定ファイルを使用できるようにした。
音量正規化のとこのファイルのコピーの部分をちょっと改良。
思いっきりソースを整理した
Linux でも動く様に Windows API を置き換えた。
Linux 向けの Makefile を書いた。
リミッタ、コンプレッサ、エクスパンダ機能を付けた。
標準出力、パイプ出力機能を付けた。


99/11/9 Ver 0.87

GPL にした。
ソースを整理していくつかに分けた。
速くなるかなと思ってヒープからメモリを取るようにしたが
それほど速くならなかった
(SSE使ってみたいけどペン3持ってないしなあ) 


99/11/5 Ver 0.86

HDD の空き容量チェックのバグの修正。


99/11/2 Ver 0.85

バッファサイズのデフォルト値を 256k にした。
メモリを多く取り過ぎていたバグをフィックス。
部分切り取り機能をサポート。
音量正規化をサポート。
フェードイン、フェードアウト処理をサポート。
ソースをちょっと整理。


99/10/25 Ver 0.82

バッファサイズを変更できるようにした。
きちんと飽和の処理をするようにした。
音量補正をできるようにした。
32k,48k のレートも扱えるようにした。
データの読み込み部分を改良した。


99/10/23 Ver 0.81

どうもエコーが酷いので遅延量を小さくする
その他こまかいデバッグ


99/10/22 Ver 0.8

名前をとりあえず waveflt にする。
テストしてみて、Ver 0.8 リリース


99/10/21

適応フィルタを作ってみる。試しにテストしてみた
ら本当にノイズが消えたんでちょっと受けた


99/10/20 

ミキシング機能を入れる。
ソースを整理してきれいにする。


99/10/19

窓を kaiser にする。で FIR フィルタは一応完成。


99/10/16

今まで手を抜いて IFFT で FIR フィルタ係数を求め
ていたがこの方法だと致命的な欠陥がある(HPF,BPF 
が設計出来ない)のに気がついて窓関数法で作り直す。

ついでに図書館から信号処理関係の参考書を借りて
きて読みまくる。あれ、うちの講座って信号処理だ
っけ?


99/10/14  Ver 0.000001

ロック音ミレニアムのフィルタサンプルにしようと
思って作り始める。


(e-WC の過去の履歴)

2000/2/15

WAVEFLT と統合。


2000/1/15 Ver 0.82

Win2k でビルドと動作確認
停止の時、Ctrl+C だけだと NT では効かないので Ctrl+break も送るようにした。
編集終了後に新しいウィンドウが開かないというバグがいつのまにか出来てたので直した。



99/12/20 Ver 0.81

設定ファイルにチェックサムを入れてエラーチェックをする様にした。
パイプのバッファサイズを変更できるようにした。
WAVEFLT を停止する時 Terminate の前に Ctrl+C を送信するようにした。
その他細かいデバッグをした。


99/12/17 Ver 0.8

ソースを更に分割 & 整理した(まだまだ汚いけど)
設定保存機能を付けた。
パイプ機能をサポート
範囲削除機能をサポート
コンプレッサをサポート
イコライザをサポート
file mapping で WAVEFLT にデータを渡すようにした。
ロングファイル名も渡せるようにした。
WaveFlt 起動中に Ctrl+C が効かない様にした。
上書き保存の時に昔のファイルを削除しないようにした。
その他細かいバグフィックス


99/11/9 Ver 0.7

GPL にした。
ソースを整理した。
デバッグしてリリース。

99/11/5 Ver 0.7b

設定を保存できるようにした。
軽くデバッグをした。

99/11/3 Ver 0.5a

とりあえず編集メニューを複数保存出来るようにした。
編集メニューのレイアウトを整理した。
コマンドライン起動できるようにした。

99/11/2 Ver 0.1a

とりあえず WAVEFLT にコマンドを渡せるようにした。

99/10/26 Ver 0.00001a

とりあえず lockon から分割してコンパイルが通るよう
に改造。