SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

少ないディレイタップ数で厚みのある残響音を作るテクニック

リバーブサウンド(残響音)生成アルゴリズム一考

高域ダンピング

 リバーブを自然な感じで響かせるためには、「だんだん音がぼやけて行く、目立たなくなる」という要件が満たされるとベターです。自然界ではあらゆるもの、それこそ空気自体がローパスフィルタとしての働きを持っていて、遠くの音がぼやけて聞こえるのもこのためです。

 これを実現するためには、ディレイタップのフィードバックにローパスフィルタをかけることをお薦めします。ローパスフィルタの実現方法は色々なパターンがあって、これはこれで書いていくとキリがないですが、とりあえず「1次IIRフィルタ」というのが一番簡単な方法かと思います。要するに、

出力波形=入力波形×(1-α)+1サンプル前の出力波形×α

 というような式で、αが0だとフィルタはかからず、αが0.5だとそこそこかかって、αが0.99だとかなりかかる。 αが1だと音が出ない。という感じになります。

 最もシンプルですが、とりあえずローパスフィルタを作りたい時はそこそこ使えます。もっと詳しく知りたい人は、「IIRフィルタ」「FIRフィルタ」などをネットで検索してみてください。

ステレオ感

 大車輪リバーブレーションモデル(名前付いてるし)で、実は一番面倒だったのはステレオ感のコントロールです。

 基本は1つ1つのディレイタップを左右で異なるフィードバック量にするのですが、ディレイタイムがランダムに変わるので、特にディレイタップ数が少ない場合は、定位が右か左にずれてしまいます。ぶっちゃけこの問題は解決してないというか、ある程度ディレイタップ数を増やすことでなんとか誤魔化しています。

まとめ

 今回はデジタルオーディオエフェクトの代表格とも言えるリバーブ(残響音)の生成アルゴリズムを掘り下げて考えてみました。この分野はとても奥が深く、工夫の余地が残されています。商用のハードウェアやソフトウェアでも、新しいアイデアに基づく製品がいまだに数多く発表されているくらいです。

 この記事が、色々なアイデアを試して独創的な音作りにチャレンジする人のための道しるべとなれば幸いです。

サンプルの解説

 サンプルファイルには、今回の大車輪リバーブを使ったサンプルサウンドとソースコードが入っています。

 サンプルサウンド(reverb1.mp3)の内容は以下の通りです。

1つめ原音
2つめ25個のディレイタップ
3つめ300個のディレイタップ
4つめ30個だけど短めのディレイタイム
5つめ50個だけど「短すぎ&濃すぎ」と「薄すぎ」の組み合わせ

 ソースコード(daisha.cpp)はC++で書いています。GN_INPUT_FILENAMEで定義した入力ファイルを読み込んで、大車輪リバーブを施した結果を、GN_OUTPUT_FILENAMEで定義した出力ファイルへ書き込みます。

 入力ファイルのフォーマットは、float型のバイナリー配列で、1つの値がモノラル音声の1サンプルに相当します。出力ファイルもfloat型のバイナリー配列ですが、IS_STEREOがtrueの場合は、L、R、L、R、……という順序でステレオ音声として格納されます。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
特集記事連載記事一覧

もっと読む

この記事の著者

鼻クローン(ハナクローン)

アルゴリズムオタクです。今は信号処理、統計処理などを頑張って勉強してます。勉強!自分の仕事とあまり関係していないことが玉に傷ですが。。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/315 2006/02/21 19:15

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー