SynthProbe 発売記念!Delay の簡単な作り方
_level0 でご無沙汰しています。
この度 SynthProbe (iTunes はコチラ) という iPhone の音楽アプリを作りました!
(通称、セオシレーターと言われていた GravSynth を大幅にパワーアップ&もっと楽しく使いやすくしたものです。音楽好きの方は是非!)
が、、、ちゃんと Flash もつくっている seo です。。
さて、SynthProbe で Delay (音がやまびこのように聴こえるエフェクト) を実装したのですが、それを AS3 にしてみたので作り方をご紹介します。
という前に Delay の仕組みをまず説明。
どうやってエコーを実現しているかというと、輪になって永久に回るカセットテープをまずイメージしていただくと良いかもしれません。(↓実物はこんな感じ)
そのテープに録音をするヘッドと再生するヘッドがありまして、まず入力信号 (マイクとでもしておきましょう) をテープに録音。そして輪になっているテープがぐるりと回って再生ヘッドに到達するとこのように声が遅れてくるわけです。くるわけです。
これで声が遅れて聴こえる回路ができたのですが、さらに遅れて聴こえる声をさらに録音する音に混ぜるとこここ、このようににに、やまびこ!びこ!びこ!のように聴こえるようになりますすす。。。
遅れた音を全部録音する音にまぜると無限に同じ音がくりかえされます。ます。ます。ます。ます。…(×∞)
これを無限フィードバックなどと言います。
テープの再生速度や再生ヘッドと録音ヘッドの位置を変えると音がくりかえされる間隔が変わります。たとえばこんな、たとえばこんな、ように、ように、に、に、に、、(間隔大から小に変化)
実装するためにパラメータを整理しましょう。
1) マイク入力のサンプルデータを格納するバッファ
これはテープに当たるものです。
2) time
これは再生ヘッドと録音ヘッドの距離。何秒で録音されてから再生されるかを表します。
3) ヘッド位置
録音された音を再生するヘッドの位置ですね。
4) フィードバック量
再生している音をどれくらい録音する音に混ぜるかの値です。
5) Wet
全体のエフェクトの音量を決める値です。聞きなれない表現ですが Delay の表記によく使われています。
さて前置きがだいぶ長くなりましたが、せっかく FlashPlayer10.1、AIR2.0 でマイクの入力を取れるようになったので wonderfl で実装してみました。是非ご参考ください!(※要 FlashPlayer10.1)
Flash はマイクの入力パケットと再生用の出力パケットが大きいのでタイムラグ (0.3 秒くらい?) がありますね。最大 2 秒のエコーを実装しているのですが、バッファ (_delayBuffer) の長さを大きくすればどこまでもメモリの許す限り長くすることができます。
ちなみに世の中の Delay エフェクトは色々ありまして、個人的には Line6 社の DL4 Delay がお気に入りです。
今回ご紹介したのは一番シンプルな例ですが、再生ヘッドを複数用意してリズミカルにエコーをかけてみたり、録音時にフィルターをかけることでエコーの減衰にクセをもたせたり、エコーの time を変えるときにテープの再生速度を変えることでエコーの音程が変わるなど色々なバリエーションがあります。実物を見てみると色々発見がありそうです!
というわけで Delay を説明したのですが SynthProbe (iTunes はコチラ) はディレイ以外にもさまざまな機能が盛りだくさんです!楽しく遊べるツールを追求してみたので、興味ついでにお気軽にダウンロードしていただけると幸いです><
以上、宣伝させていただきました m(_ _)m!
(そして発売記念価格 (\230) で販売中です…)