FV-1を使った自作エフェクタ

リバーブを自作するICとして、Spin SemiconductorのFV-1がよく知られています。
最初、4chミキサーを自作したときにリバーブモジュールとして組み込んだのですが、3bitの切替スイッチをつけるだけで、内蔵8種類のエフェクトが切り替えられるので、コンパクトエフェクタとして製作してみます。


回路図は、こんな感じ。

かんたんな回路ですが、イチから作るのはめんどくさいので、通販で買えるキットを使います。
 共立電子のプリアンプキット
 秋月通商のFV-1 DIP化モジュールキット

ケースは100均の金属製小物入れを使ってます。
僕はジャズをギター一本でやってるので、「ソロのときにエフェクタを踏み込んでディストーションをかけて。。」ということをやらないので、ケースの強度を問題にしてません。
ソロギターを弾く人は、強度のあるケースを探したほうがいいでしょう。

まず、プリアンプキットだけを組んで、バッファアンプとしての動作を確認します。
このプリアンプキットは、そのままで組むとゲイン30倍ですが、大きすぎます。
非反転アンプなので、反転入力へのフィードバック抵抗を100kΩ//100kΩに変更して、ゲインを1+1倍に変更します。
FV-1自体は、ゲイン1倍なので、そこを直結して配線し、ボリュームの動作、入力ジャックへプラグ挿入で電源ONの動作まで確認します。

FV-1をリバーブとして使う場合には、原音とのミックスが必要なので、FV-1の後ろに置くバッファアンプは、反転入力にして抵抗加算回路が使えるようにするのが普通ですが、ここで使うキットのプリアンプは、非反転入力なので、改造が必要となります。
エフェクタとして使う場合は、ディストーションなど原音との混合は必要ない場合が多いので、ここではキットのまま非反転入力で使います。
出力段で原音をミックスする機能を追加する場合には、プリアンプキットを反転入力に改造する必要がありますので、留意ください。


次に、FV-1基板ですが、Fv-1は表面実装ICで、はんだ付けがやりにくいので、秋月で売ってるDIP化基板を、ユニバーサル基板に乗せることにします。
9Vの電池から、3.3Vに三端子レギュレータで降圧する回路、E2PROMソケット、4BITのDIP-SW、入出力のDCカットコンデンサなどを搭載します。
ここで信号系の電圧について整理します。
プリアンプ基板は、9V単一電源で、内部に4.5Vの中間電位を生成して、仮想グランドとして動きます。
ボリュームを通過するときには、DC分が不要なので、ボリュームの前後でDCカットコンデンサを挿入します。
FV-1は、3.3V単一電源で、IC内部に1.65Vの中間電位を持っているので、後段のプリアンプの前にもDCカットコンデンサを入れます。
プリアンプからボリュームの前にもDCカットコンデンサが必要です。
作った基板は、こんな感じ。

ICをはんだ付けする前に、電源系をテスターで測って、誤配線がないかどうかは確認します。
問題なければFV-1をはんだ付けします。


こんな感じです。
プログラム切替に使うスイッチについて、ちょっと書きます。
S2からS0ピンがプログラム切替です。
ゼロのときにonになるコンプリメンタリのスイッチを使うと、ロータリーdipスイッチの番号がデータシートと一致します。
最上位の8のbitは、内蔵/PROMの切替であるT0ピンにつなぎます。
0〜7が内蔵プログラム、
8〜FがPROMのプログラムになります。

パネル面に取り付けられるような16ポジションのコード出力ロータリースイッチがなかなか見当たらないので、2回路4接点のロータリースイッチで、4ポジションの切替をパネル面に出してあります。
内部のロータリースイッチを3,7,B、Fに置くことで、4ブロックの切替ができます。

E2PROMの作成

E2PROMとして、24LC32Aを使います。
対応するROMライタが必要です。
ここでは、CH341AのROMライタを600円ほどで買いました。
ICクリップが付属していないものが安く手に入ります。
Linuxの人は、FV-1 Development Board の8ページ目にlinux用のプログラマソフトの説明があります。

Linuxの人は、spinASMにも苦労しますけど、ここにあります。
asfv1 1.2.7
8つ分のbinをcatでまとめて、焼いてください。
windowsの人は、spinのHPにspinASMやプログラマが紹介されてますので、苦労しないと思います。

PROMにはアドレス線が3本ありますが、基板上では全部Loにします。
WP端子を僕はLoにしてますが、ROMライタを内蔵させるなどするなら、この端子は抵抗でHiに吊っておきます。

僕の環境

Linuxのdebian上でasfv1とch341eepromを動かせるpython3.9のラッパーをくんであります。

spinCADのインストール

FV-1のプログラムは、既存のものをダウンロードしてくることもできますが、自分で作ることもできます。
spinCADというソフトで、グラフィカルにモジュールを組み合わせてエフェクタが作れます。
HolyCityAudio / SpinCAD-Designer のreleasesに、SpinCAD-Designer-build-1032.jar のようなファイルが落ちています。
javaのランタイムが必要です。
このファイルをjavaから起動すれば、spinCADが動きます。
$ java -jar SpinCAD-Designer-build-1032.jar [linuxの場合]
windowsの場合は、このファイルをダブルクリックで起動すると思います。


spinASMは使えるようになっていてくださいね。

メニューからモジュールを配置して配線したら、File/Save Path as ASM  で、spinASMのアセンブラに変換します。
8スロットまとめてhexに変換もできるようですが、linuxのrom焼きソフトがbinしか読まないみたいなので、僕はspinASM経由でROM焼いてます。
【独り言】
spinCADが吐き出すHEXファイルは、インテルHEXです。
フォーマットは、
:040000000000318D3E
:0400040000000406EE
省略
:040FF80000000011E4
:040FFC0000000011E0
:00000001FF
コロン+バイト数2桁+アドレス4桁+レコードタイプ2桁+データ+チェックサム2桁
と至って単純だから、これを読めるようにすればいいのね。

基本的なデザイン

リバーブ

リバーブモジュールは、リバーブ音しか出しませんので、原音と2:1ミキサーで合成する必要があります。
リバーブ側の音量操作をPODに配線してリバーブの調節にします。

フェーズシフタ、コーラス

これもリバーブ同様に、原音をミキサーで合成必要。
PODが二つ使えるなら、rateとwidthをPODにつなげますが、一つしか使えないのなら、rateをconstantで固定して、widthだけをPODにつなげます。

フィルタ系

autoWAHやイコライザを作るときに、2P SVF Adjastableのフィルタを使いますが、右クリックで設定画面を出して、最高フィルタ周波数を設定しておきます。
PODで周波数を制御するときには、ここで設定した周波数範囲で可変ができます。

効果確認

ROMを焼かなくても、どんな音になるのかはシミュレーションできます。
自分のギター音をwavファイルに保存します。
フォーマットは、16ビットステレオです。
シミュレーション/ソースファイル設定で、このファイルを指定すると、スタートボタンで音が聞けます。
PODを動かすこともできます。
constantを変更したときは、stop/startが必要。

エラー対策

画面の下に、リソースメーターがあり、赤に染まるとリソース不足のエラーです。
例えば、オクターバーでは二つあるLFOを使い切ってしまいますので、ピッチシフタなどとは同時に使えません。
オクターバーで低い方しか使わないのであれば、ピッチシフタで代用するなどちょっと頭をひねります。

In,Out

INとOUTは、端子が二つあります。
FV-1はステレオ対応なので、LRに対応してます。
オクターバーのベース音を別チャンネルに出すなどに利用できます。

spinCADで作る意味

zoomのMS-50Gなどのmultistompでも、好きなエフェクタを内部で組み合わせることができますが、直列に並べることしかできません。
Fv-1では、例えばオクターバーに送る原音だけをローパスするなど並列の組み合わせができます。