おもちゃキーボードを魔改造してFPGAシンセを作る
1. はじめに
更新が一年以上空いてしまった。。。やっぱり続かなかったね。ずっとFPGAでマルチエフェクターを作っていたのですが、その設計資産を使って簡単なガジェットを何か作れないかなと思ってシンセサイザの自作をしてみる事にしました。FPGAエフェクターもそのうち記事にしたい。
簡単に作るがコンセプトのため、モジュールなどを買い集めて回路設計はしない方針で作ります。また鍵盤はさすがに自作出来ないので、出来るだけ安いキーボードを探して下記のキーボードを購入しました。 FPGAは家で持て余していたamazonで買える激安FPGAモジュールを使用しました。FPGAモジュールは過去に記事にしていますので、そちらの記事もぜひ見て欲しいです。
2. 仕様
・サンプリング周波数:48kHz
・量子化bit:16bit
・モノフォニック
・ステレオ(現状は左右から同じ音を出す、将来的にロータリー的なステレオエフェクトを実装したい)
パラメータ一覧
パラメータ | 説明 | 値 | |
shape | 波形 | sin, triangle, squear, up saw, down saw | |
mod | 周波数モジュレーション | エンベロープ100% ~ なし ~ LFO100% | |
FILTER | type | フィルタタイプ | BYPASS, LPF(Q=1), LPF(Q=6), LPF(Q=12), BPF(Q=1), BPF(Q=6), BPF(Q=12), |
freq | カットオフ周波数 | 240Hz~2.4kHz | |
mod | カットオフ周波数モジュレーション | エンベロープ100% ~ なし ~ LFO100% | |
LFO | shape | LFO波形 | sin, triangle, squear, up saw, down saw |
rate | LFO周波数 | 約23Hz ~ 1.38Hz | |
depth | LFO振幅 | 0 ~ 100% | |
MAIN | LFO | 振幅LFOモジュレーション | 0 ~ 100% |
Vol | マスターボリューム | 0 ~ 100% | |
Key | キー | 0~+12半音 | |
Mode | 将来拡張 | - | |
ENV | atk | アタックタイム | 5ms ~ 1.36s |
decay | ディケイタイム | 5ms ~ 1.36s | |
sustain | サスティンレベル | 0 ~ 100% | |
release | リリースタイム | 5ms ~ 1.36s |
3. 構成
構成は図の通り、FPGAを中心にSA-46の鍵盤、パラメータ設定用の可変抵抗器を乗せた基板、スピーカアンプモジュールを接続します。
可変抵抗器は12bit/8chのAD変換ICであるMCP3208を使用します。SPI接続です。スピーカアンプはDACとアンプが一つになったICがないかなーと思って探していた所見つけたMAX98357モジュールを使用します。鍵盤とスピーカはSA-46のものを流用します。鍵盤は32鍵ありますが、回路を調べてみた所8in4outのキーマトリクス方式でした。
実物の写真はこちらです。メイン基板を取っ払って代わりにFPGAモジュール等を内部配線しています。可変抵抗はユニバーサル基板に実装して白いプラ板をナットで固定、MCP3208からのSPIは元々LCD用の穴だった所に通しています。
外観
内部配線
配線がめちゃめちゃ汚いですが、案の定動作がたまに安定しません。最初はスピーカの近くにMAX98357モジュールを配置していたのですが、SPIとI2Sが干渉しているのか、パラメータはバタバタするし、スピーカはノイズ祭りでうまくいきませんでした。MAX98357をFPGAボードのピンに直挿しする事で解決しました、その分スピーカ配線は長くなっていますが。
一番苦労したのがGNDです。筐体がプラスチックで個々のモジュールのGNDをとる方法がFPGAボードと線でつなぐしかなく、まともに面でGNDをとれないのでこれも動作不安定の原因のようです。
内部のFPGA設計については次回以降で。