Srempy

03s_242_1srempy.jpg
デジタルエフェクターというとディスプレイをつけたくなるもので、ポットなしでスイッチのみを使って操作するというエフェクターを製作しました。精度よく角穴加工するのはかなり大変なので、Tabby's工房さんにお願いしました。

▽ディスプレイ・スイッチ基板レイアウト
03s_242_2srempyL.png
いつものようにチャタリング防止を行っています。OLEDディスプレイ基板用押ボタンスイッチは秋月電子で購入しました。

DSP基板はOwm Pedalと同じものを使用しています。下写真のように合体させます。
03s_242_3srempyi.jpg

ディスプレイの詳細は前回記事をご覧ください。スイッチ操作は割り込みではなくメインループで処理しています(GitHubはこちら)。エフェクトオフ時にはスイッチの反応が速くなりますが、実用上問題ないので特に対処していません。▲▼スイッチ長押しでフラッシュメモリにパラメータ保存できます。下記ページの内容を使わせていただきました。
sora lab - STM + HAL Flashの書き込み・読み込み

エフェクトプログラムはもちろん変え放題ですが、今回私が考えたものを紹介したいと思います。※信号処理は旧処理方法(TxRxCpltCallback関数利用なし、16ビット)のままです。



アナログ回路でのフィルタ設計は複雑になる場合が多く、コンデンサの容量値も限られています。また、リアルタイムに動かすとなると可変抵抗やフォトカプラを使うぐらいしか選択肢がありません。デジタル信号処理でのフィルタについては計算方法が確立しているため、専門知識がなくとも設計可能で、任意の定数を動かすこともできます。計算式は下記ページのものを利用させていただきました。
C++でVST作り - 簡単なデジタルフィルタの実装

フェイザーはノッチフィルタがかかったような周波数特性で、谷となる周波数が動いています(参考ページ→MXR Phase 90 Analysis)。今回はこの特性をピーキングフィルタを使って再現、発展させたエフェクトを考えました。フェイザーとワウを合わせたような効果で、5つのモード(STD、SOFT、INV、HIGH、LOW)があります。名前の由来は3つ(Three)のピーキングフィルタ(Peaking Filter)です。

<STD・SOFTモード>
03s_242_4srempyF1.png
SOFTモードでは、単純に谷となるフィルタを2つかけています。谷と谷の間は減衰し、スッキリとした感じとなります。STD(スタンダード)モードは、Phase 90の特性に近づけています。うねり感を得るためには、2つの谷の間に山が必要なようです。ちなみに2つの谷の間隔が広いとユニヴァイブのコーラスモードっぽい音になります。谷となる周波数の揺れ幅や高低は、出音への影響は少なかったです。

<INV・HIGH・LOWモード>
03s_242_5srempyF2.png
フィルタを谷ではなく山にした場合、山が1つだとオートワウのようになります。山を2つにすると、クセは強いもののフェイザーっぽいシュワシュワ感が現れます。INV(インバース)モードでは、2つの山の間にさらに谷を追加しています。HIGH/LOWモードは谷と山を混ぜており、通常のフェイザーの高音域/低音域が強調された感じとなります。

<計算高速化>
BiQuadフィルタの係数は三角関数の計算が入っていて、そのままでは処理に時間がかかり過ぎると思われます。そのため表計算ソフトで近似式を算出するなどして対応しています。それでも実際のCPU使用率は70%程度となってしまいましたので、計算高速化についてはもう少し検討していく予定です。

タグ : 自作エフェクター 周波数特性 マイコン フェイザー 

Owm Pedal ハードウェア編

03s_237_1owmp.jpg
STM32F405という32ビットマイコンを搭載した自作デジタルエフェクター「Owm Pedal」です。名前は同じマイコンを搭載した既存のペダル「OWL Pedal」をもじってつけました。(Owm Pedal ソフトウェア編はこちら

オーディオコーデックはCS4220のセカンドソース品V4220Mです。サンプリングレートが48kHzまでですが差動入出力で価格が安く(秋月電子で240円)、エフェクターに最適だと考えました。

▽回路図
03s_237_2owms.png
<V4220M周辺>
データシートに入出力の回路が記載してあるのですが、抵抗値はよく使う値へと変更しました。バイアス電圧用に8.25kΩの抵抗があるところは、10kΩと100kΩ2個を並列にして8.33kΩとしています。

V4220Mのデータシートでは音量等をコントロールできそうに書いてありますが、実際はできないようです。マスターモードで動作させる場合は8番(DOUT)ピンに47kΩのプルダウン抵抗を入れます。また、CS4220のデータシートには電源オン時に27番(RSTN)ピンを10msの間LOWにしておくように書いてあるため、10uFのコンデンサを入れました。4・5・8・9番ピンからマイコンへ接続しますが、通信線の長さが短いためダンピング抵抗は不要かと思います。

<電源>
電源はレギュレータで以下のように分けました。
・マイコン用→デジタル3.3V(100mA)
・V4220M用→デジタル5V(20mA) デジタル3.3V(5mA) アナログ5V(60mA)
・OPA1678×3用→アナログ5V(20mA)
アナログ5V電源は通常分離する必要はありませんが、万一問題があったとき基板発注し直すのが嫌なので分けています。

▽DSP基板(Owm Board)レイアウトについて(KiCadデータはGitHubへ)
真ん中あたりに電源、上側がデジタル、下側がアナログという配置となっています。GNDは裏面を一面プレーンにしました。入力のカップリングコンデンサはPMLCAPを使っており、やや大きくて高価ですが歪率は下がるでしょう。残念ながらBIASに接続すべきところをGNDにつなぐというありがちな間違いをしてしまいましたので、内部写真では妙なジャンパー線が写っています(KiCadデータは修正済)。

ピン間隔が狭いICはパッドを1mm程度長くすると半田付けしやすいです。マイコンのピンはほとんど使えるように引き出しました。一応I2C用にプルアップ抵抗の取り付けもできます。マイコン上側のLEDはデバッグ用のつもりです。水晶振動子周りのパターン設計は下記ページを参考にしました。
水晶振動子 ガイド - RSオンライン

▽ポット類基板レイアウト
03s_237_3owml.png
ポット類基板と筐体はRasPd4のものを使いまわしました。回路図は描いていません。無理やりジャンパーを飛ばしてチャタリング対策の抵抗やコンデンサを入れました。下写真のように基板を合体させます。
03s_237_4owmpp.jpg

とりあえず何もエフェクトをかけないスルー音が出るようにプログラミングし、周波数特性と歪率を測定しました。歪率は、クリップしない最大入力約0.7Vrmsでの結果です。
03s_237_5owmf.png
100Hzの歪率が思ったより悪いですが問題ないでしょう。ノイズも測定限界以下だったので、歪み系エフェクトでもおそらく大丈夫だと思います。

タグ : 自作エフェクター レイアウト 回路図 マイコン 周波数特性 歪率 

MOOER Micro Preamp 006 特性測定

14_226_1mp006p.jpg
MOOER Micro Preampは小型デジタルプリアンプということで、中身が気になり購入してみました。元になったモデルはぼかしてあることが多いですが、006の場合「Based on Fender blues deluxe」と公式動画に記載があります。とりあえずろくに弾きもせずに特性を測定しました。以下オーバードライブチャンネル(LEDが赤に点灯)をAch、クリーンチャネル(LEDが青に点灯)をBchと表記しています。

▽波形・倍音(Ach)
14_226_2mp006g.png
真空管の歪みのはずですが、特に偶数次倍音が出やすいというわけではありませんでした。

▽周波数特性
<ゲイン変更・キャビネットシミュレータ>
AchとBchで1kHz時同じ音量になるように調整しています。BASS、MID、TRE全て5(12時の位置)です。
14_226_3mp006g.png
AchではBchより高域と低域が削られていることがわかります。ゲインを上げた時の特性変化はほとんどなく、わずかに高域が落ちる程度です。キャビネットシミュレータをオンにした時の変化幅はAchとBchで変わりません。

<Ach>
14_226_4mp006g.png
<Bch>
14_226_5mp006g.png
トーンコントロールの効き方はAchとBchで変わりません。あまり変化幅は大きくなく、BASSとMIDはグラフィックイコライザの変化のような感じに見えます。マニュアルには下記のように記載があるので、コントロールの変化の仕方は元になったモデルと同じではないということがわかります。
3つのノブを全て12時の位置にするとプリアンプはMooerにてアナライズした時のサウンドになります。時計回りで周波数をブーストし、反時計回りでカットします。各ノブの帯域はモデルごとに最適に調整されています。

▽レイテンシー→測定方法はこちら
14_226_6mp006w.png
約0.6msです。1ms以下というのがもはや当たり前になっているのかもしれません。

ノイズも測定しようとしましたが、私の環境では測定限界以下だったので特に問題ないでしょう。ハードウェアについては別記事にしました。→MOOER Micro Preamp 006 分解

タグ : 歪み 周波数特性 波形・倍音 市販エフェクター 

MOS FETリレー G3VM-21GR 特性測定

SPSTモーメンタリースイッチでエフェクトのバイパスをする場合、リレーとマイコンを使うのが簡単だと思います。しかしながらメカニカルリレーは入手性や電力消費の点でイマイチかなと考え、MOS FETリレーを試すことにしました。

MOS FETリレーはソリッドステートリレーの一種で、各メーカーで同様の商品がありますが名称が違います(フォトリレー、Photo MOSリレー等)。参考ページ→オムロン リレー 技術解説
通常のものはオン抵抗RONや端子間容量COFFが大きいため、バイパスに使用する場合はバッファーが必要となってしまいます。そこで今回は低オン抵抗・低端子間容量タイプのG3VM-21GR(RON=5Ω、COFF=1pF)というMOS FETリレーを選びました。エフェクターでよく使われる青い3PDTフットスイッチと比較検討します。
14_222_1G3VMp.jpg
G3VM-21GRは表面実装部品なので丸ピンソケットにはんだづけしました。フットスイッチは同じ大きさの黒いものも測定しましたが、青のフットスイッチと大差なかったので結果からは省いています。

ハイインピーダンス条件下での使用を考慮し、以下の接続としました。
  [擬似ギター出力]→[リレーG3VM-21GR]または[フットスイッチ]→[バッファー(入力インピーダンス1MΩ)]→[PCマイク入力]

スイッチオン時に音質が変化しないのはもちろん重要ですが、スイッチオフ時も下図のようにハイパスフィルターを形成して高域が漏れることが考えられるので、そのあたりについても確認します。
14_222_2G3VMs.png
※配線が近いだけでも容量が増加してしまうので注意が必要です。

▽結果
14_222_3G3VMd.png

<スイッチオン時の特性変化>
周波数特性はほとんど重なっていますが、よく見るとリレーでは高域が下がっています。まぁごくわずかなので大丈夫でしょう。歪率についてはほぼ変化はありません。

<スイッチオフ時の音漏れ>
リレーではオンオフの差が-21dB(10kHz)となっており、ブースターやハイゲインエフェクターでは問題が出てくるかもしれません。エフェクターに組み込んだ後、どの程度影響があるか測定する予定です。フットスイッチでもわずかに漏れがあることがわかりましたが、実際のトゥルーバイパス配線ではオフ時にエフェクト回路の入力をアースに落とすので、問題になることはないと思います。

---以下2018年6月14日追記---
14_222_4G3VMb.png
まず上図上側のバイパス方法を試しましたが、音漏れがあり発振しやすい上、切替時に少しポップノイズが出ました。その後下側の回路に変え音漏れや発振はなくなりましたが、ポップノイズは消えませんでした。スイッチングの順番をいろいろ変えてみましたがダメなようです。バッファーを入れて考え直すことにします。

タグ : 周波数特性 歪率 擬似ギター出力 

スイープ信号を使った周波数特性確認(Pure Data パッチ)

Pure Data(Pd)で様々なフィルターをかけるときに、どんな周波数特性になるか確認しておきたい場合があります。[noise~]と[rfft~]を使うのが簡単ですが、若干ギザギザな形になるのと横軸(周波数)が対数でないので使いづらさを感じていました。そこで、スイープ信号を用いて見慣れた形で周波数特性を確認できるパッチを作りました。

03p_196_3sweep.png
このパッチをダウンロード※上の図よりグラフが大きいです。)

<使い方>
[pd filter]の部分に目的の処理を入れます(今回は[hip~ 100]と[lop~ 2200]が入っています)。STARTの[○]をクリックすると、周波数スイープが始まりグラフが描画され、十数秒で自動的に終了します。count_up_valueの数値を上げると飛び飛びにスイープするため処理が早く終了します。



<解説>
下の方にある[env~ 2048]は常に1024サンプルごとに音量の数値を出力し、それにより[t b f]の左アウトレットからbangが出続けています。スタート前は[spigot]でそのbangがせき止められていますが、スタートして[spigot]の右インレットに1が入ることでせき止められていたbangが出力され始めます。

そして[+ ]からカウンターと同じ数値が出力され、この数値を元に計算された周波数の余弦波信号が[osc~ 20]から出力されます。その後[pd filter]を通った後の信号の音量が[env~ 2048]から出力され、Array "sweep"に書き込まれます。途中の[*~ 0.00044722]は、変化がないときの音量を30dBに合わせるためのものです。また、[clip 0 60]はデータがグラフの枠からはみ出さないように入れています。

カウンターには[f 1]内の数値が足されていき、533以上の数値になったとき[spigot]の右インレットに0が入り終了となります。



当初は[metro]を使ってbangを出力し続けていたのですが、[env~]の出力を利用する方が無駄がない気がして変更しました。Arrayのサイズは534と中途半端ですが、なんとなくグラフの大きさは500程度がちょうどいいかなと思って調整した結果となっています。

タグ : PureData 周波数特性 

管理人

管理人

自己紹介のページ
記事一覧
Twitter
GitHub

ブログ内検索
カテゴリー
タグ

自作エフェクター   レイアウト   回路図   歪み   PureData   周波数特性   マイコン   波形・倍音   RaspberryPi   エレキギター   アンプ   エフェクター自作方法   歪率   エレキベース   真空管   コーラス   ピックアップ   静音ギター   ヘッドフォンアンプ   擬似ギター出力   市販エフェクター   アコースティックギター   ブースター   コンデンサ   ソロギター   ポールピース   イコライザー   コンプレッサー   ビブラート   フェイザー   トレモロ   TAB譜   ディレイ   DIY_Layout_Creator   ワウ   オートワウ   バッファー   

最近の記事
最新コメント
Twitter
RSS
メールフォーム
当ブログに関するお問い合わせはこちらからお願いします。 ※FAQ(よくある質問)もお読みください。

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

アクセスカウンター