VGM player for Longan Nano / Longan Nano で動くVGM プレーヤー (YM2151 FM + YMZ294-D PSG版)
これはなに?
何かと話題の RISC-V マイコン Longan Nano (GD32V) を使って VGM ファイルを再生させる試みです。SD カード内のフォルダに保存した vgm 拡張子のファイルを順番に再生します。
可能な限り表面実装部品を使ってコンパクトにまとめることを目標にしています。
コンパイルとマイコンへの書き込み
Visual Studio Code + PlatformIO IDE を使用します。具体的な使用法については以下を参照。
配線図
PDF ダウンロード
使用部品の説明
- Longan Nano: マイコン。128KB フラッシュメモリ版(64KB 版では足りません)。IC ソケットに入るように細いピンヘッダで実装のこと。
- AE-Si5351A: I2C 制御の可変周波数発振 IC Si5351 を使った秋月電子で売られているモジュール。
- YMZ294D: AY-3-8919, YM2149 互換の PSG(SSG) 音声チップ。秋月電子で入手可能。
- YM2151: FM 音源チップ。アリエクなどで入手可能。偽物やリマーク品が増えてきたので注意。
- YM3012: DAC チップ。アリエクなどで入手可能。リマーク品あり。
- オペアンプ: 4個入り SOP14、速めのものがオススメ。超高性能なものは発振する可能性大。今回の例では OPA1654AIDR と LMC6484AIMX/NOPB を試した。中華から買うと100%ニセモノが来るので TI.com から直接買ったほうがよい。
- PT2257: I2C 制御の音量調整 IC 表面実装 SOP8 版。5V 動作。アリエクなどで入手可能。
- 1000uF: 電源安定用 OS-CON。秋月で入手可能。
- ボリューム: 10KΩ Aカーブ。ALPSALPNE 製 RK09K/RK09D を使用。YM2151 用は二連、PSG用は単連、高さ30mm。単連は秋月で、二連は MISUMI VONA などで入手可能。
- その他の表面実装チップ: 1206 (JIS 3216) サイズ。
- ボリュームつまみ: D軸、高さ 15mm だとアクリル板に干渉しないけど、売られているものは 17mm が多い。イモネジタイプで 13mm のものがあるけど高いのです。
VGM データの保存方法など
SD カードにディレクトリを作って、その中に VGM フォーマットファイルを保存します。ファイルには「.vgm」の拡張子が必要です。ZIP 圧縮された VGM ファイルである「*.vgz」は認識しません。解凍して .vgm の拡張子をつけてください。不要なファイル、空のディレクトリは削除してください。
ノイズについて
SD カードのアクセスノイズ
microSD カードからデータを読むときにブツブツとノイズが出ます。これはアクセス時に一気に大電流(100mA前後)が流れるため電圧降下が起こるのが原因です。
SD カードの種類によってノイズが目立つものと目立たないものがあります。これまで試した限りでは、容量が少ないもの(2GBとか)だと圧倒的にノイズが少ないですがメーカーが違えば異なると思われます。
PC 電源のノイズ
PC から USB で電源供給を行い、さらに音声を PC に入力すると大きなグランドのループができて、ノイズが増幅されることがあります。電源は可能な限りクリーンなもの(モバイルバッテリーなど)を使ってください。
既知の問題点
- 一部の VGM ファイルでポーズ命令が間延びすることがあります。
- 一部の VGM ファイルでポーズ命令が正しく解釈されず、早送り状態になることがあります。