第三回 インパルス応答の採取?!SOの3
(2003.9.5)

今度こそCool Edit Proを使ってより具体的にインパルス応答を取得してみます。

くどいですがここで紹介するテクニックでは様々な毒音波(機材や耳に負担をかける音) を使用します。ここで紹介するテクニックや波形は全てご自身の責任のにおいてご使 用下さい。万一、機材やご身体に障害をきたしても私は如何なる責も負いかねるもの とします。

ここでは第二回で紹介しました、同期加算とTSPを組み合わせてインパルス応答を採取していくことにします。
まずはTSPですが、これを作るプログラムなどもあるのですが、ここでは適当な長さの音声ファイルを用意しましたので、 以下からダウンロードしてみて下さい。本当は以前見つけたTSPがリストアップされているサイトを紹介したかったのですが、 YAHOOで検索しても出てこなかったのです、、、
データは全て32ビット浮動小数点値のWAVファイルとなっています。WAVファイルのサンプリングレートは44.1KHzとなっていますが、TSPはどんなサンプリング周波数で使っても周波数特性は変わりませんので(継続時間は変わります)録音するサンプリングレートに合わせてリサンプリングなどの処理をする必要はありません。そのまま再生録音のサンプリングレートで使うことが可能です。
1024サンプル
2048サンプル
16384サンプル

さて、実際にインパルス応答を取得する前に、計測しようとしているスピーカーなりマイクなりの インパルス応答の長さを予測しなければいけません。 なぜならTSPを1回だけ再生して、それを録音するだけならば、音が消えた所を見計らって録音を停止すれば良いのですが、 同期加算をする場合、一定の周期でTSPを繰り返し再生して、それを録音しなければ成らないからです。
前のTSPに対する余韻と、次のTSPの音の出だしが重なってしまうと、重なった部分はノイズとなるので正確なインパルス応答を取得できなくなるのです。かといって余裕をとり過ぎて長い周期で繰り返しますと、録音に時間が掛かるしメモリやディスク容量も消費してしまいます。
といっても試したこともないのにインパルス応答の長さがわかるはずも在りません。。。
これは何度かインパルス応答の取得を繰り返しながら、勘所をつかむしかないのです。。。
僕自身の勘所で言えば、残響などを含めずにオンマイクでスピーカーのインパルス応答を取得した場合おおむね100ms〜150ms、 6畳和室の我が城でスピーカーから数メートル離れて録った場合では、 500ms〜1000ms位のインパルス応答の長さを見込んでおけば良いかと思います。
インパルス応答の長さに検討をつけたら次は同期加算の周期を決めます。 同期加算の周期は、最低でも「TSPの長さ+インパルス応答の長さ」が必要です。今回はさらに波形のカット&ペーストを使って手動で同期加算をしようと目論んでいるため、数値的にわかり易い長さにする必要もあります。
ここでは説明のため、スピーカーのオンマイクの音のインパルス応答を、44.1KHzのサンプリングレートで、1024サンプル長のTSPを使って 計測することにします。すると、44.1KHzで、150msのインパルス応答長を仮定しますと、約7000サンプルの周期が必要となります。さらに後々の手動による同期加算のことを考えてここでは10,000サンプル毎の周期で録音・再生することにします。

ここで、どんな機材を使って、何のインパルス応答を取得するのかを表にしてみましす。
計測対象パソコン用の安物スピーカー(オンマイクにて)安くて音的にも判りやすいですし
オーディオIFEDIROL UA-5解像度が24ビットありますし、再生と録音でクロックの同期が取れます。今回の目的には適任かと思います。
マイクRODE NT-1マイクはカラオケマイクで録ると、カラオケマイクで録ったインパルス応答が録れます。スピーカーの音に忠実であるためには、なるべく味付けの少ないマイクが良いです。(NT-1にしたって結構味付けあるだろ、という説もありますが、、)UA-5はファンタム電源に対応していますので、コンデンサマイクであっても直に繋いで録音可能です。
パソコン自作PentiumIV 2.53GHzここまでハイスペックである必要はありません。PenIII1GHzもあれば何とかなると思います。(保障は致しかねますが、、汗)
波形編集ソフトSyntrillium Cool Edit Pro 2.1今回はこのソフトの操作をベースに説明させて頂きます。
TSP1024サンプル長TSPのサイズは長ければ長い程、ノイズや歪みの影響が小さくなります。
同期加算10,000サンプル長 128回128回重ねると、理論上は約21dBもSN比が改善します。

では実際にCool Edit Proで、1024サンプル長TSPのWAVファイルを開いてみます。 波形の長さの単位ですが、通常の時:分:秒の表示ですと、サンプル数か判りませんので メニューの[View]→[Display Time Format]→[Samples]を選択して、サンプル単位の表示にしておきます。
 
TSP波形の後に無音のデータを追加して、波形全体の長さを10,000サンプルにします。Cool Edit Proでは秒単位(少数可)でしか空白時間を追加できませんので、長めの無音データを追加したのち、10,000サンプル目以降を切り取ります。
 

このままデータをカット&ペーストして増やすこともできますが、今回はループ再生の機能を使うことにします。
画面をマルチトラック表示(MultiTrack View)に切り替えて、先ほどの波形データをセッション領域(Session Display)にドロップします。
録音の開始時点では、マウスのクリック音が録音されてしまったりなど、音声が安定しないことが多いので、先頭に少し隙間を作って、すこし後方にデータを追加します。
追加したデータを右クリックし、表示されるメニューから[Loop Properties]を選択します。
「Wave Block Looping」ダイアログが表示されますので、【Enable Looping】をONにし、[Simple Looping [no gaps]]を選択します。
【OK】を押してダイアログを閉じた後、波形データの右端をドラッグして、右の方へぐっと延ばします。どこまで伸ばすのかと言いますと、128回繰り返すまでなのですが、僕の知る限り繰り返し回数は目で数えるしかないです。。。
なのでダルイ人は大体128回くらいでOKです。(汗)
2トラック目に録音したいので、2トラック目の【R】ボタンを押して点灯(?)させます。
また、録音デバイスはデフォルトではステレオになっているため、マイクがつながったチャンネルだけを選択するようにします。(通常「Rec1」と書かれているボタンをクリックして、「Record Devices」画面を表示し、録音に使いたいチャンネルを選択して【OK】を押します。ボタンの表示が「Rec1R」とか「Rec1L」などに変わるはずです)
もう1点、セッションの音声フォーマットの解像度が、32Bitになっていることを確認しておいて下さい。

 

次にスピーカとマイクをUA-5に接続します。スピーカーは機種にもよりますが、安物だと大抵ミニジャックになっているので、 標準プラグに変換するプラグを付けて、ヘッドホン端子に接続します。RCA端子があるならばラインアウトに接続します。
ヘッドホン端子に接続する場合、UA-5のMONITOR SWは忘れずにOFFにます。そうでないとハウリングを起こしてしまいます。
マイクは、NT-1の場合はコンデンサマイクですので、キャノンケーブルで接続したのちファンタム電源をONにします。
これで録音する準備が整いましたので、いざ録音します。 録音ボタンを押して、録音を開始します。
最後まで再生が終わったら、数秒ほど待った後に、録音を停止します。(直ぐに停止動作に入ると、マウスとか諸々の音が入ってしまうので。。。と言っても1回目の録音はリハーサルとして、録音や再生レベルの調整をした方が無難です。)

録音が終了すると、2トラック目に録音データが作られているかと思います。今度はこのデータからインパルス応答を復元する作業を行います。

 
まず、Cool Edit Proの場合は、セッションに含まれる波形データの時間情報は、セッション内部での相対時間となってしまう(セッション内で100サンプル目から始まる波形の0サンプル目は、100サンプル目として表示されてしまう)ので、この面倒を避けるため、只今録音したデータをセッションから削除します。(よく時間にシビアな波形編集をしていて分けが判らなくなるのは、このためだったりすることが多いです。(涙))
ファイル一覧から今録音した波形データのファイルをダブルクリックして、編集表示(Edit View)に切り替えます。
波形の前後の無駄な空白時間を削除します。頭の部分は、最初に余裕を持たせておいたサンプル数と同じだけ削ります。お尻の部分は、もう1回繰り返し再生したとして、次の区間が始まる瞬間から後ろを削ります。これで波形全体の長さが同期加算の周期(10000サンプル)の整数倍になっているはずです。

さて、ここから手動による同期加算を始めます。
まず波形の丁度真ん中辺りで、時間が10000の倍数になってるサンプルを選択します。(128 回繰り返し再生して録音した場合は64万サンプル目です。)
次にシフトキーを押しながら波形の最後までを選択します。つまり波形の真ん中から後ろ半分を選択します。
選択された部分を切り取ります。
そして切り取った部分を、残った波形の先頭からミックスします。(波形の先頭を選択し、[Shift]+[Ctrl]+[V]を押した後、 「Mix Paste」画面にて、[Overlap{Mix}]を選択し、【OK】を押します。)
つまり元々の波形の前半分と後半分とをミックスします。
もう勘の良い方はお気づきかと思われますが、最終的には1つのブロックとなるまで、同じ操作を繰り返します。 これで手動による同期加算が実現されます。 (この方法ならば128回の同期加算であっても、7回のカット&ペーストのみで実現可能です。)
波形をミックスして行くと、表示上は波形がクリップしているように見えますが、 フォーマットが32ビットの浮動小数点値となっているため実際にはクリップしていません。 最後にノーマライズすればOKです。

そして、そして最後は、いよいよ同期加算を終えた波形から、インパルス応答を復元する手順です。
前回説明しましたとおり、TSPをリバースにした逆TSP波形によって、TSPに対する応答を畳み込むことで、インパルス応答を復元することができます。
まず今回の録音で使った1024サンプル長のTSP波形をもう一度開きます。
そして、TSP波形の全体を選択した後、メニューの[Effects]→[Reverse]を選択します。
これで逆TSP波形を得ることができましたので、これを畳み込み用の波形として登録します。 波形全体を選択し、メニューから[Effects]→[Special]→[Convolution]を選択します。
ダイアログ画面が表示されたら、【Clear】ボタンを押し、「Mono」が選択されていることを確認し、 【Add Sel. >>】ボタンを押します。
これで、逆TSP波形が畳み込み用のデータとして登録されます。

 
そして、先ほど同期加算を終えた音声データの画面に切り替え、 [Effects]→[Special]→[Convolution]を選択し、【OK】を押します。
最後にノーマライズします。([Effects]→[Amplitude]→[Normailize]を選択し、100%で【OK】を押します。)
これで何かミスがなければ、下の画像に示す通り、綺麗なインパルス応答波形が出来上がっているはずです。

 
波形の出だしの前方に少し無音部分がありますが、これを残しておいてもあまり意味が無いばかりか、音が遅れて聞こえる原因にもなりますので、 削除します。
波形の後方は、余韻が無くなったところから後を削除します。もしノイズが目立つようでしたら、不自然な残響感を生む原因になりますので、 ノイズ部分がなるべく目立たないように、フェードアウト処理をしておくと良いでしょう。(ノイズは無いに越したことはありませんが、、)
後は、この波形を畳み込み用のデータとして登録すれば、任意の音声をパソコンのスピーカーから再生したような音質に 加工することが出来るようになります。

前の記事へ | 次の記事へ |戻る