■自作デジタルエフェクター

■RasPd1 ハードウェア編

03_174_1raspd1p.jpg
Raspberry Pi 3とPure Data(Pd)を使ったデジタルエフェクターを作りました。名前は適当ですが「RasPd」(ラズピーディー)です。このシリーズが続くかわかりませんが、とりあえず1号機は完成ということにしておきます。

Raspberry Pi 3を選んだのは、ウェブ上での情報が多く、GUI環境があるというのは大きなメリットだと思ったためです。結局はレイテンシー低減のためGUIなしでやることになりましたが、やってみるとなんとか慣れてくるものです。実用的な設定でのレイテンシーは14msとまずまずの値となりました。

USBオーディオインターフェイスについては、別記事に記載しています。
Raspberry Pi 用USBオーディオインターフェースの選定

Plugable USBオーディオ変換アダプタには前段にバッファーが必要となります。デジタル用USB電源5Vでそのままバッファーを動かすとノイズが大きいため、バッファー用にアナログ用電源を用意します。今回は絶縁型DC-DCコンバータで5Vを12Vに昇圧しました。絶縁型DC-DCコンバータはA.GND(アナロググラウンド)とD.GND(デジタルグラウンド)が内部で繋がっていない状態となっていて、ノイズ低減が見込めます。他には9V程度の電源からUSB用5Vに降圧させる案も考えられますが、Raspberry Pi 3に使えそうな5V・2Aの絶縁型DC-DCコンバータは手に入りにくいと思います。

▽回路図、接続図
03_174_2raspd1s.gif
電源は「USB5V電源→フィルタ→絶縁型DC-DCコンバータ→フィルター→アナログ用電源」という形になっています。スイッチング電源のフィルタにはインダクタを入れるのが普通ですが、可聴域ではあまり変わらないのと手持ちに適当なものがなかったため入れていません。消費電力が大きいオペアンプでは電圧が下がりすぎるので、フィルタの抵抗値は半分でもよいと思います。
※ずっと「キーン」というノイズに悩まされていたのですが、Raspberry Pi 3本体を新品に変えるとなくなりました。いろいろな実験をするうちにどこかが故障していたのだと思います。ですので通常はここまでノイズ対策をする必要はなさそうです。絶縁型でないDC-DCコンバータでもよいかもしれません。

USBオーディオの周辺回路が面倒な感じになっているのは、高域のプリエンファシス・デエンファシスを考えていた名残です。高域だけ増幅すると影響が出そうなエフェクト(コンプレッサー等)がある気がしたので、単に音量を増減するという形にしました。

「超小型LCDキャラクタディスプレイモジュール」「2色LED付スイッチ付ロータリーエンコーダ」(1色だけ利用)は秋月電子で販売しているものです。回路図は省略しましたが、データシートの通りチャタリング防止の抵抗やコンデンサを入れています。

▽コントロール割り当て
左スイッチ/ロータリーエンコーダ: エフェクト切替/パラメータ増減
中央スイッチ/ロータリーエンコーダ: エフェクト切替/パラメータ増減
右スイッチ/ロータリーエンコーダ: パラメータのページ切替、長押しでシャットダウン/パラメータ増減
左フットスイッチ: エフェクトオン・オフ、オン時左LED点灯
右フットスイッチ: 特殊機能(ブースト機能等)オン・オフ、オン時中央LED点灯
側面トグルスイッチ: 緊急時のバイパス用

現在はエフェクト単機能を切り替えて使用するプログラムとなっていますが、将来的には複数のエフェクトを繋いだパッチを切り替えて使用できるようにしたいと思います。そのためにはプログラミングはもちろん、スイッチやLCDも変更していく必要がありそうです。

■Raspberry Pi 用USBオーディオインターフェースの選定

Raspberry Piはマイク入力がないため、別途USBオーディオインターフェースが必要となります。とりあえず試した3種類を紹介しておきます。

Creative Sound Blaster Play!
たまたま手持ちにあったもので、現在は後継機種が出ています。
・分解されている方の記事→USB DAC を分解
C-Media CM119というICチップが使われています。Raspberry Piに挿すだけで認識し、録音・再生ができます。しかしPure Dataでは「tried but couldn't sync A/D/A」というエラーが数分に一度発生し、一瞬だけノイズが出ます。いろいろ設定を変えましたがこのエラーは消えないため、別のものを試すことにしました。

Plugable USB オーディオ変換アダプタ
03_176_1usbp.jpg
接着剤で固めてあるため、分解すると元に戻せません。USB端子側のプラスチック部分を壊す方が楽だと思います。
こちらはC-Media HS100BというICチップとなっています。これも認識は問題ありませんが、Pure Dataで上記と同じエラーが発生します。市販されている安価なUSBオーディオインターフェースはおそらくC-MediaのICを使っているでしょうから、別のものを買っても同じエラーになりそうです。エラー時のノイズは一瞬でほとんど気づかないため、やむを得ずこれを使っていくことにします。※現在はエラーは出ていません(追記参照)。

周波数特性を測定してみると、低域がかなり削られています。たぶん入力のコンデンサの容量が少ないのだろうと思い入力から辿っていくと、コンデンサC12が怪しいとわかりました。これに10μFの積層セラミックコンデンサを並列に追加すると特性が改善しました(1μFのフィルムコンデンサ等でも大丈夫だと思います)。
03_176_2usbpp.jpg
入力インピーダンスが低いため、ギターを繋ぐ場合は前段にバッファーが必要となります。バッファー等に関しては別に記事を書く予定です。

BEHRINGER GUITAR LINK UCG102
03_176_3usbu.jpg
だいぶ前に買ったのですが、現在は値上がりしているようです。Texas Instruments PCM2902というICチップが使われています。少し基板が大きいので採用保留としました。軽くテストしかしていませんが、これもたまにPure Dataのエラーが出ます。ただバッファーが不要なのは楽なので、今後こちらに変更するかもしれません。

---以下2017年4月17日追記---

「tried but couldn't sync A/D/A」というエラーは下記サイトを見て導入したリアルタイムカーネル(もしくは、cmdline.txtの設定項目)が原因かもしれません。導入せずにセットアップすると、今のところエラーは発生していません。特にレイテンシーも変わらないため、導入しない方がよさそうです。
・リアルタイムカーネル導入参考ページ→Raspberry Pi 3とリアルタイムカーネル(3)[自前ビルド無し導入編(おまけ)]
コメント欄に「I2Sのサウンドデバイスでレイテンシーが抑えられる」という記載もあるので、今後の検討課題です。

■USB接続ミニマイク
03_176_4usbm.jpg
分解しただけですが、一応おまけで紹介しておきます。ICを覆う黒い樹脂は取り除けませんでしたが、lsusbコマンドで確認するとC-Media CM108と認識していました。

■タグ : RaspberryPi

■レイテンシーの測定

通常デジタルエフェクターでは、音声処理にかかる時間の分遅延(レイテンシー)が発生します。0.01秒(10ms)以下だとリアルタイム処理と言っていいレベルのようです。なかなかレイテンシーが記載されている記事がありません。買ったはいいものの遅延がひどいというのは避けたいものです。
レイテンシー比較参考ページ

Pure Dataでレイテンシーを測定する場合はPd\doc\7.stuff\tools\latency.pdのパッチを使うことができます。しかしながらこのパッチで測定した場合、聴感より大きい値になっている気がしたため、別の方法で測定してみました。

図にするまでもありませんが、下図のように直接繋いだ音(Lch)と機器を通した音(Rch)を録音し比較するというものです。
03_175_1latep.gif

録音したファイルを拡大して見てみると、下図のようにRchの音が遅れます。(音量レベルは特に合わせていません。)
03_175_2lateg.gif
そしてlatency.pdでの測定結果と比べましたが、同じ遅延時間となりました。結局このパッチでレイテンシーを測定して問題ないと思われます。
こちらのサイトでも考察されています→139 not found

Pure Dataの設定を無理に低レイテンシーにすると、出力される音が途切れて雑音が発生します。現在私が製作中のRaspberryPi3エフェクターでは、Delay 5・Block size 64の設定までは雑音が出ず、実際のレイテンシーは12msでした。しかしながら、どの程度重い処理まで可能なのかは未知数です。

ちなみにZOOM MS-50Gのレイテンシーもついでに測定してみましたが、6個エフェクトをかけても1ms程度でした。本当にメーカーの技術力には圧倒されます……

■デジタルエフェクター自作に関するメモ

デジタルエフェクターを自作するにあたって、調べたことをまとめておきます。解説できる知識がないため、とりあえずリンクのみばかりです。

■レイテンシー(latency)の問題
別の記事を書きました→レイテンシーの測定

■Pure Data
Pure Data (Pd)というプログラミング環境があります。一般的なプログラミングとは違い、キャンバスに箱を配置して線で繋ぐといった感じでプログラミングできます。詳細は公式サイト等をご覧ください。Pdであればプログラミング初心者でも比較的簡単にエフェクトを開発することができます。

■自分でエフェクトをプログラミングできるペダル(完成品、キット)と参考価格等
(ほとんどこちらのページを参考にしました→Want a Programmable Guitar Pedal?
MOD Devices MOD Duo レイテンシー5ms $649
Hoxtown OWL Pedal £249
StompShield from Open Music Labs Arduinoペダル キット$49 Arduino Uno本体\2940
pedalSHIELD DUE Arduino Guitar Pedal キット£39.95 Arduino Due本体\6090
Line6 Tone Core DSP Developer Kit $199.99
FV-1 Development System :: SPN1001-DEV $50
Bela 超低レイテンシー キット£140
Blackfin DSP基板 \3218 開発プラットフォーム基板 \9698

■自作例
Arduino Guitar Pedal
Minimalist Arduino DSP
Simple Audio DSP Module
mbedを使用したマルチエフェクター(ブログは見れないようです)
Guitar Extended Pure Data + Raspberry Pi
Raspberry Piでギターエフェクターを作る
139 not found Pure Data + Raspberry Pi

管理人

ブログ内検索

メールフォーム

当ブログに関するお問い合わせはこちらからお願いします。 ※FAQ(よくある質問)もお読みください。

お名前
メールアドレス
件名
本文

アクセスカウンター