音遊び日記

ハードウェアとソフトウェアの両面から”音”で遊んだ事を備忘録として書いています。

おもちゃキーボードを魔改造してFPGAシンセを作る

 

1. はじめに

 更新が一年以上空いてしまった。。。やっぱり続かなかったね。ずっとFPGAでマルチエフェクターを作っていたのですが、その設計資産を使って簡単なガジェットを何か作れないかなと思ってシンセサイザの自作をしてみる事にしました。FPGAエフェクターもそのうち記事にしたい。

 簡単に作るがコンセプトのため、モジュールなどを買い集めて回路設計はしない方針で作ります。また鍵盤はさすがに自作出来ないので、出来るだけ安いキーボードを探して下記のキーボードを購入しました。 FPGAは家で持て余していたamazonで買える激安FPGAモジュールを使用しました。FPGAモジュールは過去に記事にしていますので、そちらの記事もぜひ見て欲しいです。

CASIO(カシオ) 32ミニ鍵盤 電子キーボード SA-46 [ミニキーボード]

CASIO(カシオ) 32ミニ鍵盤 電子キーボード SA-46 [ミニキーボード]

  • 発売日: 2010/05/20
  • メディア: エレクトロニクス
 

 

 

hwswsgps.hatenablog.com

 

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のキーマトリクス方式でした。

f:id:hsy221:20210404222215p:plain

 実物の写真はこちらです。メイン基板を取っ払って代わりにFPGAモジュール等を内部配線しています。可変抵抗はユニバーサル基板に実装して白いプラ板をナットで固定、MCP3208からのSPIは元々LCD用の穴だった所に通しています。

 

f:id:hsy221:20210805225544j:plain

外観

 

f:id:hsy221:20210805225602j:plain

内部配線

 

 配線がめちゃめちゃ汚いですが、案の定動作がたまに安定しません。最初はスピーカの近くにMAX98357モジュールを配置していたのですが、SPIとI2Sが干渉しているのか、パラメータはバタバタするし、スピーカはノイズ祭りでうまくいきませんでした。MAX98357をFPGAボードのピンに直挿しする事で解決しました、その分スピーカ配線は長くなっていますが。

 一番苦労したのがGNDです。筐体がプラスチックで個々のモジュールのGNDをとる方法がFPGAボードと線でつなぐしかなく、まともに面でGNDをとれないのでこれも動作不安定の原因のようです。

 内部のFPGA設計については次回以降で。