シングルディレーの除去                         (C)Y.Utsunomia 2008-2010 フォント:Fixed sysやMSゴシック、MS明朝などでご利用下さい。      半角、全角のスペース表現が正常化します。  様々な処理を行ったり、現場作業を行っていると、やむをえない事情により複数の 伝送系が生じたり、レーテンシーの問題で、正規の信号に一定の遅れ(ときに進み) を伴った信号が重なってしまうことがある。混ざり合ってしまったものは容易には 分離できそうにないが、一定のアルゴリズムを組み立てれば遅れた信号のみを時間軸 上で移動させることができ、結果的に分離することが可能である。  アルゴリズム自体は非常にシンプルなので、プログラム化も容易だろうし、そのよ うな目的のプログラムもすでにありそうな気もする。また、工夫し拡張すれば数十波 程度の残響(初期反射音など)の分離もプログラム化できるだろう。ご存知あるいは そのようなプログラムを組みました、などの情報があればお知らせ下さい。試用の上 「そのほかの有用なプログラム」の項に加えさせていただきたいです。  シングルディレーされた状態をモデル化すると次のようになります。 (ただし、遅れているだけで、レベル、波形は同一と仮定します)  A B Cなどのキャラクタはそのサンプルの数値を、キャラクタの前の符号は  極性(または演算子)を表す。 ○シングルディレーモデル(正極性・・通称、同相) <deray_dev_1.gif を参照> A B C D E F G H I J K L M N O P ・・本来の信号 A B C D E F G H I J K L M N O P ・・遅れた信号   この二つの信号が加算された状態で一つのトラックにあるとする。   (一文字当たり1サンプルとする) ☆アルゴリズム1a (普通に加算法)(遅れが同極性の場合) A B C D E F G H I J K L M N O P ・・本来の信号 A B C D E F G H I J K L M N O P ・・遅れた信号 4サンプル遅 -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P らせ、反転 -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P 8サンプル遅らせ A B C D E F G H I J K L M N O P 反転しない A B C D E F G H I J K L M N 12サンプル遅らせ、反転 -A -B -C -D -E -F -G -H -I -J -K -L -M -N -A -B -C -D -E -F -G -H -I -J 16サンプル遅らせ、反転しない A B C D E F G H I J + A B C D E F _______________________________________ A B C D E F G H I J K L M N O P A B C D E F  2列と3列、4列と5列、6列と7列、8列と9列がそれぞれ相殺し、1列と10列が残る。 ゆえに分離完了となる。 <deray_dev_2.gif を参照>  作業を文章で表すと、 1)遅れを確定し(仮に4サンプル=tdとする)*普通は数百〜数千サンプル 2)トラックをAlt T N Aでつくり、オリジナルトラックをコピー(2番目のトラック) 3)1td分、タイムシフトツールで遅らせる。         (2番目のトラック)  *画面下のタイムカウンタを”全桁サンプル”に設定し数値入力が便利  *あらかじめ遅れ量サンプル数を計算しておくと便利 4)2番目のトラックを選択し、「上下を反転」 5)2)と同様に3番目のトラックをつくり、オリジナルをコピー 6)2td分、タイムシフトツールで遅らせる          (3番目のトラック) 7)4番目のトラックを作成し、オリジナルをコピー 8)3td分、タイムシフトツールで遅らせる          (4番目のトラック) 9)4番目のトラックを選択し、「上下を反転」         (4番目のトラック) 10)5番目のトラックを作成し、オリジナルトラックをコピー (5番目のトラック) 11)4td分、タイムシフトツールで遅らせる 12)全てのトラックを選択し、「ミックスして作成」を実行  作業を要約すると、作業トラックを遅れで割った数だけトラックを用意し、(仮に 10秒のトラックで、遅れが100msとすると、100のトラックを並べねばならない!!) すべてのトラックにオリジナルトラックをコピーし、偶数トラックのみ極性を反転し、 トラックを順に遅れずつずらせていき、最後に全てを加算する。Audacityの処理能力 は高く、オフラインでの「ミックスして作成」で、100や200程度の加算では浮動小数点 で誤差なく実行できる。しかし再生は避けたほうが・・。それ以前に手間が大変だ。 学習目的ではラベルなどを併用し、(先にメモ帳などで、ラベル書式の遅れ計算デー タとナンバリングを行ったファイルを用意し、それをAudacityに読み込ませて作業を 行うと、楽に作業できる。 *後述の複利的方法に比べ、最後に一回のみの加算になるので、遅れ設定が適切なら 誤差が蓄積しにくいというメリットがある。 <deray_dev_3.gif を参照> ○シングルディレーモデル(逆極性・・通称、逆相) A B C D E F G H I J K L M N O P ・・本来の信号 -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P ・・遅れた信号 ☆アルゴリズム1b (普通に加算法)(遅れが逆極性の場合) A B C D E F G H I J K L M N O P ・・本来の信号 -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P ・・遅れた信号 4サンプル遅 A B C D E F G H I J K L M N O P らせ -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P 8サンプル遅らせ A B C D E F G H I J K L M N O P -A -B -C -D -E -F -G -H -I -J -K -L -M -N 12サンプル遅らせ A B C D E F G H I J K L M N -A -B -C -D -E -F -G -H -I -J 16サンプル遅らせ A B C D E F G H I J + -A -B -C -D -E -F _______________________________________ A B C D E F G H I J K L M N O P -A -B -C -D -E -F  2列と3列、4列と5列、6列と7列、8列と9列がそれぞれ相殺し、1列と10列が残る。 ゆえに分離完了となる。  作業を要約すると、作業トラックを遅れで割った数だけトラックを用意し、(仮に 10秒のトラックで、遅れが100msとすると、同様に100のトラックを並べねばならない) すべてのトラックにオリジナルトラックをコピーし、トラックを順に遅れずつずらせ ていき、最後に全てを加算する。  練習としてならまだしも、実用的にはとてもやってられない作業だ、 ************************************** ☆アルゴリズム2a (2のN乗則を利用した複利的加算法)(遅れが同極性の場合)  分離するには正確に遅れのサンプル数を把握しなければならない。  能率の良い分離(遅れ信号をさらに遅らせる)には以下の作業を行う。  もともと遅れが4サンプルあるが、極性を反転しさらに4サンプル遅らせた  信号を加算すると・・ A B C D E F G H I J K L M N O P ・・本来の信号 A B C D E F G H I J K L M N O P ・・遅れた信号 -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P + -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P ______________________________________ A B C D E F G H I J K L M N O P Q -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P  第2列と第3列が相殺したが、あらたに8サンプル、逆極性の遅れが現れた。  次には同様に8サンプル遅れ、同極性の信号を加算すると A B C D E F G H I J K L M N O P Q -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P   A B C D E F G H I J K L M N O P + -A -B -C -D -E -F -G -H -I ______________________________________ A B C D E F G H I J K L M N O P -A -B -C -D -E -F -G -H -I  やはり第2列と第3列が相殺し、逆極性16サンプル遅れになった。しかし全長が15  サンプルなので作業は完了したことになる。実際には1秒で48000サンプルなので、  作業はまだまだ続く・・・・。  作業を箇条書きにすると 1)オリジナルに極性反転とtd遅らせた(タイムシフトツールで)信号をミックス。  *ミックスには「トラック」→「ミックスして作成」を使用 2)トラック作成し、1)で作成したトラックをコピーし2td遅らせ、ミックス。 3)トラック作成し、2)で作成したトラックをコピーし4td遅らせ、ミックス。  要約すると、複利的に作業を行うが、遅れが2のN乗数列(1、2、4、8、16、32・・)に なるので、作業工程が大幅に短縮される。ただし、最初の一回のみ極性反転しなけれ ばならない。作業長10秒、td=100msとすると、8回で終わる。100トラックよりかなり 速いし、もっと作業長が長くなっても我慢できる作業回数で済む。 *前述の単利的方法に比べると、一回ごとに加算を繰り返すため、audacityのような ハイビット浮動小数点演算でない場合には、誤差が蓄積しやすい傾向がある。 *同様の理由で、ディザもOFFの方が良いだろう。 ☆アルゴリズム2b (2のN乗則を利用した加算法)(遅れが逆極性の場合)  分離するには正確に遅れのサンプル数を把握しなければならない。  能率の良い分離(遅れ信号をさらに遅らせる)には以下の作業を行う。  もともと遅れが4サンプルあるが、4サンプル遅らせた信号を加算すると・・ A B C D E F G H I J K L M N O P ・・本来の信号 -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P ・・遅れた信号 A B C D E F G H I J K L M N O P + -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P ______________________________________ A B C D E F G H I J K L M N O P Q -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P  第2列と第3列が相殺したが、あらたに8サンプル、逆極性の遅れが現れた。  次には同様に8サンプル遅れ、同極性の信号を加算すると A B C D E F G H I J K L M N O P Q -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P   A B C D E F G H I J K L M N O P + -A -B -C -D -E -F -G -H -I ______________________________________ A B C D E F G H I J K L M N O P -A -B -C -D -E -F -G -H -I  作業を箇条書きにすると 1)オリジナルにtd遅らせた(タイムシフトツールで)信号をミックス。  *ミックスには「トラック」→「ミックスして作成」を使用 2)トラック作成し、1)で作成したトラックをコピーし2td遅らせ、ミックス。 3)トラック作成し、2)で作成したトラックをコピーし4td遅らせ、ミックス。  原理的には、遅れ信号のレベルが、取り出そうとしている信号のレベルと異なる場 合は、1工程毎にそのレベル差を組み込めばよいのだが、レベル差の読み取りが結構 面倒です。