電子趣味の部屋

電子系のガジェットやアプリ開発等の趣味の話題を書いてます

ArduinoでFM音源シールド作成 (YM2413)

FM音源を制御したいと思い、FM音源シールドを作ってみました。
今回使用した音源チップはYM2413 (OPLL)です。
これはMSXで使われていた音源です。
ピンの数が少なく、プリセットで音色が用意され、さらにはDACも内蔵してるので、一番簡単に扱えるだろうと思ってさいようしました。
購入先はAliexpressで10個約13$(送料込み)でした。

テストプログラムとして
YM2413 Shield Ver 1.0
にある、YM2413_Tetrisを拝借しました。
ArduinoとYM2413は以下のように接続をして、YM2413_Tetrisのピン定義を修正してFM音源を動作させることに成功しました。

DATAピン = D2,D3,D4,D5,D6,D7,D9,D10
CS = A5
WE = A4
IC = D9
A0 = A3

すべてデジタルI/Oとして扱います。
将来MicroSDカードを使用したいため、SPI関連のピンとD8は明けてあります。

YM2413からの出力を直接オーディオジャックに接続すると音が小さかったので、アンプを追加しました。
ただオペアンプは過去にノイズまで増幅されてなかなか上手くいかずに断念した経験があり、敬遠してました。
今回は簡単に扱えるオーディオアンプを見つけたので、これを使ってみました。
今回使用したのは、低電圧1.2Wオーディオアンプ HT82V739です。
これはオーディオ用のアンプ回路とバイアス回路がチップ内に構成されていて、整電用のコンデンサ3個の外付け部品のみで簡単に高質な出力を得ることができ、さらには秋月電子で2個100円という低価格な超お勧め品です。

これでYM2413搭載のFM音源シールドが完成しました。


Arduino Leonardoに乗っけてみました

まだテスト用のプログラムで演奏させるだけですが、MML等で演奏できるように作っていこうと思います。