■タグ「自作エフェクター」

■2ループスイッチャー+絶縁型パワーサプライ

02_224_1lpswp.jpg
直列可2ループボックス+パワーサプライのスイッチが経年劣化のためか接触不良となっていました。もう一度配線をやり直す気にはなれなかったので、AVRマイコンを使ったスイッチャーとして生まれ変わらせました。当初はアナログスイッチICを使おうと思っていましたが、バッファーが必要で複雑になりすぎるようです。普通にメカニカルリレーを使うことにして、ついでにパワーサプライ部分はなんとなく絶縁型へと変更しました。

▽回路図
02_224_2lpsws.png
マイコンはATtiny13Aだとプログラムメモリが足りないので、ATtiny85です。ATtiny13Aの使用方法と同様に、Arduino IDEをATtiny85にも対応させます。参考ページ→Arduino IDE で ATtiny 他の開発

5Vレギュレーターは念のため78M05としていますが、9V入力であれば78L05でも大丈夫でしょう。リレー941H-2C-5Dのコイル駆動電流は30mAで、マイコンから直接流し続けるのは無理があるため、トランジスタを使用します。

▽レイアウト(KiCadデータはこちらへ)
02_224_3lpswl.png
パワーサプライ部分は別基板となっています。絶縁型DC-DCコンバータが大きいので内部がかなり窮屈になってしまいました。

▽Arduinoスケッチ
表示/非表示切替(133行)
スイッチに関する部分はMOSリレーバイパスと同じで、長押しの判定はsw_countを増やすだけです。メインループが1msごとなので長押しは1秒となるはずですが、処理に時間がかかるので実測では1.8秒ぐらいでした。

▽操作方法
 ・マニュアルモード(中央LED消灯)
   左スイッチ: ループBのオンオフ切替、長押しで特殊モードへ
   右スイッチ: ループAのオンオフ切替
 ・特殊モード(中央LED点灯)
   左スイッチ: ループA→ループBの順で直列接続
    ※直列切替後は右スイッチでAのみ、左スイッチでBのみオンの状態に戻る
   右スイッチ: ループAのみオンとループBのみオンを切り替え、長押しでマニュアルモードへ

■MOSリレーバイパス

02_223_1mrbP.jpg
ソリッドステートリレーを利用したエフェクトのバイパス方法をバッファーなしで検討していました(別記事参照)が、音漏れやポップノイズの問題が解決できなかったため結局バッファードバイパスにすることにしました。BOSS筐体BD-2に採用しています。あまり利点がないバイパス方式となってしまいましたので、再度作ることはなさそうです。素直にラッチングリレーを使った方がよいでしょう。

▽回路図
02_223_2mrbs.png
秋月電子で安売りしている光MOSFET PS7200K-1Aを使用しましたが、フォトリレーTLP222Aでも問題ないと思います。エフェクト側の入力部分の回路によってはバイパス音に影響が出るので、本来は入力の分岐前にもバッファーを入れた方がよさそうです。バイアス電圧Vbはエフェクト回路から引っ張ってきています。

▽レイアウト
02_223_3mrbp.png

▽Arduinoスケッチ(ATtiny13A用)
#define SW_PIN 3
#define BYPASS_PIN 0
#define FX_ON_PIN 1
#define LED_PIN 4

int sw_value = 0;
long sw_count = 0; // intだとオーバーフローするかも
boolean fx_state = false;

void setup() {
pinMode(SW_PIN, INPUT_PULLUP); // 内部プルアップ抵抗有効
pinMode(BYPASS_PIN, OUTPUT);
pinMode(FX_ON_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
digitalWrite(BYPASS_PIN, HIGH); // 初期値はバイパス
digitalWrite(FX_ON_PIN, LOW);
digitalWrite(LED_PIN, HIGH); // 電源オン時LEDが2回点灯
delay(300);
digitalWrite(LED_PIN, LOW);
delay(300);
digitalWrite(LED_PIN, HIGH);
delay(300);
digitalWrite(LED_PIN, LOW);
}

void loop() {
sw_value = digitalRead(SW_PIN);
if (sw_value == LOW) {
sw_count += 1;
} else {
sw_count = 0;
}

if (sw_count == 10) { // 10msスイッチ押すとエフェクト切替(チャタリング対策)
fx_state = !fx_state;
if (fx_state) {
digitalWrite(FX_ON_PIN, HIGH); // HIGHにするピンの順番が逆だとポップノイズあり
delay(2); // これがないとポップノイズあり
digitalWrite(BYPASS_PIN, LOW);
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(BYPASS_PIN, HIGH);
delay(2);
digitalWrite(FX_ON_PIN, LOW);
digitalWrite(LED_PIN, LOW);
}
}
delay(1);
}
チャタリング対策の参考ページ→Arduinoの基礎 – スイッチのオン・オフを読み取る
ATtiny13Aの使用方法はこちらの記事へ

■RasPd3 ハードウェア編

03_220_1raspd3p.jpg
今まで製作したRaspberry Pi搭載エフェクター(RasPd1RasPd2RasPd4)は単一エフェクトのみしか使えませんでしたが、今回のRasPd3は複数のエフェクトを同時に使えてパッチ切替もできる、いわゆるマルチエフェクターを想定したものです。当初はオーディオインターフェースにCS4272を使うつもりでした(別記事参照)が、うまくいかずWM8731を使っています。しかしながらCS4272を使ったオーディオカードTeensy Super Audio Board(SAB)は全データが公開されているので、大いに参考にしました。

▽回路図
03_220_2raspd3s.png
ΔΣ型ADコンバータでは入力のフィルタは簡易なものでよいらしいので、RasPd4より簡略化しました。ギター入力はモノラルですが、WM8731のLR入力を逆位相にして内部プログラム(下図)で足し合わせるという差動入力っぽいことをしています。
03_220_3raspdpd.png

ノイズ対策として、絶縁型DC-DCコンバータやデジタルアイソレータ(Si8662BB、Si8602AB)を用いてRaspberry PiとGNDを分離しました。スイッチについてはチャタリング対策の抵抗とコンデンサを入れています。ロータリーエンコーダは高速回転させるかもしれないので、コンデンサの容量が少なめです。

2.2インチLCDディスプレイモジュールはAmazonで購入しました。SAINSMARTの商品ページのManualに回路図が入っています。回路図中に3.3Vと記載がありますが、実際は3.0Vのレギュレータが使われていました。LEDピンへ抵抗を挿入すると明るさが減り、消費電力を抑えられます。Raspberry Piでの使用方法についてはadafruitのILI9341 TFT display用ページの内容で問題ありませんでした。

▽レイアウト(KiCadのデータはこちらへ)
03_220_4raspd3l 03_220_5raspd3swl.png
WM8731のアナログGNDとデジタルGNDは分離せず、裏面のベタGNDができるだけ一面プレーンになるようにしています。スイッチ類の基板はユニバーサル基板で作成しており、細い線がジャンパーです。ディスプレイモジュールのSDカードソケットは配線の邪魔なので取り外しました。ケースはタカチTD10-15-4Bです。

ノイズについては、劇的ではないですが少しは減少したようです。入力が0.5Vrmsぐらいで歪率1%となりますが、ブースターとして使うことはないので大丈夫でしょう。内部プログラムについてはまだ全然できていません。今までにない規模のプログラミングとなるので、相当時間がかかると思われます。

■Crosstortion

02_215_1crossP.jpg
東京エフェクター「第5回 エフェクタービルダーズ・コンテスト」に向けて製作したエフェクターです。コンテストのテーマは「ハイゲイン」だったのですが、ちょうど回路を考えていた2017年10月頃はBig Muffに注目が集まっていたので、なんとなくBig Muffをベースにすることにしました。また、今回は今までやったことがなかった「クロスオーバー歪み」をコントロールしています。ペダル名は単にcrossover distortionを略したものです。

ルックスもコンテストでは重要となりますが、私にはセンスがないので評価は低いでしょう。ポット周りの図形のカドが目盛りになっているというのをやってみたかったので、角ばったデザインにしました。それと、ウケがいいかもしれないという安易な考えで、適当に黄金比を取り入れています。シールは「手作りステッカー メタリックシルバー」というものを使いました。

▽回路図
02_215_2crossS.gif
オペアンプばかりですが、ICBM(オペアンプマフ)ではありません。トーン回路や周波数特性はトランジスタを使った現行Big Muffとほとんど同じで、歪み部分は個人的に好きな「オペアンプで歪ませる」というものとなっています。参考ページ→Big Muff Pi Analysis
コンデンサは3.9nFを持ってなかったので3.3nFにしたり、まとめ買いしていた10μFをやたらと使っていたり等、ある意味Electro-Harmonix精神も盛り込んでいます。

真ん中あたりの4つのオペアンプとLM317がクロスオーバー歪み関連です。こちらのページの図11と同じ回路で、理想ダイオード回路にLM317で調節した電圧を加算しています。同ページ図12のように波形の半分以上をバッサリとクリップしますが、プラス側とマイナス側を足し合わせることで擬似的にクロスオーバー歪みがある音を生み出しています。小音量の音はクリップする電圧値を超えられず切り捨てられるため、ノイズゲートとしても働きます。倍音については、奇数次倍音のみが出るようです(各クリッピングと倍音の記事最下部に掲載)。コンテスト用の個体は、一応トリマーを追加して最小電圧値を細かく調節しました。

あまり回路検討にかける時間がなかったので、後から見ると粗がある感じがします。入力部のICを変えれば全部5V駆動でよさそうです。あとクロスオーバー歪みを扱うなら素直にトランジスタを使う方がもっと簡単だったんじゃないかと思います。

▽レイアウト
02_215_3crossL.png
▽PCB(横86.4mm縦40.6mm)
02_215_4crossLP.gif
歪みエフェクターは筐体が大きい方が印象に残る気がするので、余裕を持ってHAMMOND 1590BBを使いました。基板は秋月電子にある角型ランドのもので、見た目はなんだかカッコイイですが少し薄い(厚さ1.2mmぐらい)です。

音についてはたぶんBig Muffっぽくなっていると思います。まぁ私は自作ラムズヘッドぐらいしかビッグマフを弾いた経験がないのでよくわかりません。倍音も測定しましたが、少し奇数次倍音が多く普通の歪みという感じでした。ハイゲインだとクリッピングの違いはあまりわからなくなると思います。肝心のクロスオーバー歪みについては、なんともいえないジュワーという感じが付加されます。ゲートファズのようなブチブチ系にもできますが、正直私はあまり好きでなかったです…

---以下2018年3月19日追記---

「第5回 エフェクタービルダーズ・コンテスト」第一次審査の点数を記載しておきます。
コンセプト:17 サウンド:16 ルックス:16 操作性:16
総合点:65 21台中11位

■RasPd4 プログラミング編

各設定についてはRasPd2 ソフトウェア編と同じですが、今回はオーディオ設定の入出力音量を操作していないので、alsamixerのMasterとCaptureのdB gainは両方0となっています。内部プログラムは2チャンネルのディストーションエフェクトです(データダウンロードはこちらへ)。

▽コントロール割り当て
左側LED: エフェクトオン時点灯、チャンネル切替モード時点滅
中央LED: Aチャンネル選択時点灯
右側LED: Bチャンネル選択時点灯
左側スイッチ: バイパス音とエフェクト音を同じ音量に合わせる機能
中央スイッチ: チャンネル切替
右側スイッチ: 2秒長押しでシャットダウン
各ポット: エフェクトパラメータ(自動保存されている)
フットスイッチ: 2秒長押しで通常モードとチャンネル切替モードを変更、通常モード時はエフェクトオン・オフ切替、チャンネル切替モード時はチャンネル切替

なかなかプログラミングが面倒でしたが、完成すると大したことはしていない感じです。フットスイッチに長押し機能を持たせた関係で、スイッチを押した時ではなく離した時に切替が働く形になり、少し違和感は残っています。

一つ原因不明の問題があり、バックグラウンドでPure Data(Pd)が起動状態のとき、立ち下がりエッジ検出で定義したコールバック関数がたまに立ち上がりエッジでも呼び出されるという現象が起こりました。どう調べてもスイッチのチャタリングではないようです。とりあえず呼び出される関数に「対象GPIOピンがLOW(0)」という条件を追加して対策しています。

▽Pdパッチ
03_214_1raspd4pd.png
なぜか今回は[spigot~]でエフェクトオン・オフを切り替えるとプツっとノイズが出るため、Isaac(139)さんの[pd spigot~]に[line~]を入れたものを使っています。[pd effect_distortion]の中身の表示は省略しましたが、前々回の記事のオーバードライブのトーン部分を変更したものが入っています。2チャンネル程度ならエフェクトをまるごとコピーすれば簡単ですが、今後の応用を考えてPdのメッセージ機能を使うことにしました。終了時にこのパッチ自体を上書き保存するため、外部ファイル操作はしていません。参考ページ→PureDataで値のプリセットを外部ファイルで管理する方法

エフェクトパラメータの取得は、RasPd2と同じでMCP3008を使っています。0.2秒ごとに0.0から100.0までの値を取得しますが、ノブを触らなくてもたまに値がブレることがあるようです。勝手に値が変わるとPdパッチに記録しているデータも変化して困る場合があるので、1以上変化しないとPythonからPdへ値を送信しないようしています。すごくゆっくりとポットを動かしたときはパラメータが変化しないことになってしまいますが、実用上は問題ないでしょう。

▽Twitter動画(そのうち消えるかもしれません)



RasPd4 ハードウェア編

管理人

ブログ内検索

メールフォーム

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

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

アクセスカウンター