mbedでデジタル・エフェクタを作ろう



 前回のFuzzに引き続き、ギター用のエフェクタを作ります。今回のテーマはディレイ。音の伝達を遅らせることで、反響や残響といった効果を作り出すエフェクタです。

 Fuzzはワイルドなアナログ回路でした。ワイルド感は大事にしたいものの、ディレイをアナログ部品だけで作るのは難しそうです。Wikipediaを調べると、テープ・エコーやスプリング・リバーブといった、物理的な「遅延回路」を使う手法が紹介されています。とても興味深いのですが、我々に作れそうな気はしませんでした。それではコンピュータ(マイコン)を使ってみたらどうでしょう。

 まず、我々が使い慣れているArduinoで実装する方法を探してみました。しかし、いい情報は見つかりません。8bitマイコンでは、パワーが不足する領域なのかもしれません。より強力なツールを求めて、いくつかのハードウェアを調べた結果、使ってみることにしたのが「mbed」です。

 mbedコミュニティでは、すでにギター用ディレイの作例が発表されています。それをベースにすることで、目標のものがあっさりと完成してしまいました。

・Ivan Sergeevさんのプロジェクト:Audio Echo Effect
http://dev.frozeneskimo.com/embedded_projects/audio_echo_effect

 既存の資源を再利用するとき、mbedの開発環境は極めて便利です。そうしたmbedの特徴については、後ほど詳しく触れることにして、まずは完成したエフェクタの音を聴いていただきましょう。今回も、四本淑三さんに試奏をお願いしました。

【動画】映像が切り替わるごとに設定が変わり、遅延時間が長くなっていきます。前回作ったエフェクタ「Fuzz」と連結していて、歪み具合も徐々に強めています。この動画の最後のサウンドを聴いたとき、我々はかなりゴキゲンでした

Fuzzと今回のディレイをつないだ状態です。ブレッドボード同士ならば、どのような連結も可能ですね

 それでは、ハードウェアから説明していきます。

 心臓部はマイコンボードの「mbed NXP LPC1768」。「mbed」は開発環境の総称で、「NXP」は半導体メーカーの名前、「LPC1768」が搭載しているマイコンの名称です。現在はこのボードがmbedの標準ハードウェアです。ここからはmbed NXP LPC1768をmbedモジュールと表記します。

 mbedモジュールは、2.54mmピッチのピンが並んだ小さな基板なので、ブレッドボードに挿して使うことができます。ブレッドボードを介して、周辺にアナログ信号の入出力回路を付け加えることで、エフェクタとして機能するようになります。

mbedモジュールに2つのオペアンプを組み合わせた回路です。電源はmbedモジュールのUSB端子から供給される前提です。mbedモジュールが出力する3.3Vを他のICが使います

【表】今回使用する部品
部品名番号品番/仕様数量
マイコンモジュール
mbed1
オペアンプIC1,2LM358N2
可変抵抗器VR1,2100KΩ2
無極性電解コンデンサC110μF1
フィルムコンデンサC22,200pF1
フィルムコンデンサC34,700pF1
積層セラミックコンデンサC40.1μF1
フィルムコンデンサC50.01μF1
電解コンデンサC6100μF1
電解コンデンサC710μF1
カーボン抵抗器R1,4,510KΩ3
カーボン抵抗器R2,34.7KΩ2
カーボン抵抗器R6,7,82.2KΩ3

 フィルムコンデンサは前回同様、Ginga Dropsで購入しました。mbedモジュールを含むその他の部品はすべて秋月電子通商や共立電子で入手可能です。

 Guitarと書かれた端子がギターからの入力です。まずオペアンプ(IC1)で信号レベルを調整し、ローパスフィルタにかけます。mbedはその信号をサンプリングし、内蔵のメモリに一時的に記録することで出力を遅らせます。遅延時間はVR2で設定可能です。LPC1768はDAコンバータ(DAC)を持っているので、直接アナログ信号を出力することができます。出力側のオペアンプ(IC2)はDACのノイズを軽減するためのローパスフィルタとして機能します。

 可変抵抗器(半固定抵抗器)は使いやすいものを探してください。特にVR2は演奏しながらこまめに操作したい部品です。我々はマルツ電波で取り扱っているツマミ付きの半固定抵抗器「GF063P1KB104」を使用しました。VR1は増幅率を設定する抵抗です。歪まない範囲で、なるべく大きな音になるよう設定します。

 ブレッドボードは千石電商で取り扱っている「SYB-46」という型番のものを使用しました。205円と廉価で、どの方向にも連結して使える点が特徴です。我々が入手したものに限っての傾向かもしれませんが、このブレッドボードはバネが弱めで、リード線のグリップ感に物足りなさがあります(4枚購入し、すべて同様の使用感でした)。部品を挿したとき、スカスカに感じるかもしれません。mbedモジュールを使うときは、このスカスカなバネが長所になります。太めのピンが多数並んでいると、バネが強いブレッドボードでは抜き差しに強い力が必要で、力をかけすぎた結果、ボードが割れたりしないか心配になります。その点、SYB-46なら弱いバネのおかげで無理なく抜き差しが可能です。実際サクッと入りました。そのかわり、電解コンデンサのような座りの悪い部品には注意が必要でしょう。我々はいつものように立てて配置するのではなく、リード線を根元で直角に曲げて、ボード上に寝かせました。こうすると、安定感が少し増します。

mbedモジュールとアナログ回路を2つのブレッドボードに分けて実装しました。全体の電源はUSBです。アナログ側の電源はmbedモジュールのVOUT端子です。この端子から3.3Vが得られます
コンデンサと抵抗が多いアナログ側はちょっとごちゃごちゃしています。バネがゆるいせいで接触不良になることがあったので、こちら側は違うブレッドボードを使ったほうが良かったかもしれません
mbed NXP LPC1768の上面。大きなチップがLPC1768です。左下に4個のLEDが並んでいます。外付け部品なしでも、かなり派手なLチカが可能です
下面にも多くのICが存在します。mbedモジュールはUSBストレージとして機能したり、LANインターフェイスを実装していたりと、外部との接続手段が豊富です

 ここからはソフトウェア面について、mbedの特徴に関する話も交えながら説明します。

 mbedの開発環境はクラウド・コンピューティングの一例です。ユーザーはWebブラウザの上でサーバー側のファイルを操作することで開発作業を行ないます。自分のPCにツールをインストールする必要はありません。サーバー上の開発環境をみんなでシェアして使います。

 mbed専用のサーバー「mbed.org」は、ソースファイルの編集や保管といったプログラム開発の基本機能だけでなく、コミュニティとしても機能します。各ユーザーは自分のコードやドキュメントを公開することができ、他のユーザーが公開したコードは、数回のクリックで自分の開発環境に読み込むことができます。

 今回のエフェクタのコードは前出のIvan Sergeevさんが書いたものです。やはりmbed.orgで公開されていて、我々はそれを自分の開発環境にインポートし、コンパイルするだけで使うことができました。処理の内容をおおざっぱに整理すると、サンプリング、バッファリング、DACへの出力をリアルタイムに順次行なっています。ごく短い、シンプルなコードで、プログラムの書きやすい環境であることが伺い知れます。

 コンパイルしたプログラム(バイナリファイル)は、ブラウザ経由でダウンロードし、mbedモジュールへ書き込みます。この過程でも専用のツールは必要ありません。PCに接続されたmbedモジュールはUSBメモリ(ストレージクラス)として認識されるので、普段から馴染みのある「ダウンロードしてコピー」の操作です。

mbedモジュールをPCに接続すると、ごく普通のUSBメモリとして認識され、中にはHTMLファイルが1つ書き込まれています。このファイルをダブルクリックすると、自動的にブラウザが立ち上がり、mbed.orgが表示されるはずです(インターネット接続は必須です)。mbed.orgで自分のアカウントを作ることがまず最初にすることです
いったんログインするとコンパイラ(統合開発環境)が使えるようになります。ブラウザのウインドウがそのままエディタになり、コンパイルを実行すると、すぐに生成されたファイルのダウンロードが始まります。それをmbedモジュールにコピーしてリセットボタンを押せば、実行されます
mbed.orgにはCookbookというコーナーがあって、たくさんの応用例が公開されています。サンプルプログラムは、数クリックで自分のコンパイラに読み込むことができます。既存の資源を素早く再利用できる環境が整っています
やりとりされるのはプログラム(ソースコード)だけではなく、Wiki形式でドキュメントを公開したり、フォーラムで議論をすることもできます。開発に必要なあらゆる要素が、1つのサイトに集約されています。mbed.orgを使っていると、新しい開発のスタイルが実感できます

 mbedを使い、コミュニティの成果を活用することで、当初は難しいと思われたディレイが実現できました。ギター用エフェクタとして考えると、もっと細かくパラメータを調整したい、とか、微かながらもはっきり聞こえるピーという雑音をどうにかしたい、といった課題は残っているのですが、ひとまず音を楽しむことができるレベルには達していると思います。今後の目標は、ソフトウェアを研究して、もう少し複雑なエフェクトを実装することです。

ディレイを作ってみたい。でも、mbedがいくら便利とはいえ新たな投資は避けたい……という人は共立電子の「ディレイキット」を試してみてはいかがでしょう。デジタルエコーIC「PT2399」を使用したコンパクトなキットです

 次回はみのり先生と一緒にチップ部品のハンダづけに挑戦する予定です。