ArduinoでFM音源を鳴らしてみたい①「設計ことはじめ」

レトロパソコン

はじめに

今回はArduinoというワンボードマイコンを利用して、FM音源の『YMF288』による実チップ演奏が出来るハードウェアを製作してみた。その顛末をここに書き留めておこう思った次第だ。

Arduinoとは

Arduinoは、主に学習用途で使われるように開発されたハードウェアだ。シールドと呼ばれる追加ハードウェアを容易に実装でき、ソフトウェア言語もC/C++をベースにした「Arduino言語」というものを使って簡単に色々なものを作り上げることが可能である。Windows上にクロスプラットフォーム開発環境(Arduino IDE)があるので簡単に開発できる。

Arduino IDE 起動画面

私がこれに目を付けたのは、何といっても「だいたいはやっている先人が居る」ということだ。今となってはFM音源のノウハウを大昔のパソコンから発掘するのにはとてつもない時間と労力を浪費してしまうだろう。であれば、オープンな統合開発環境のArduinoを使うほか無い!というところなのだ。

使用環境

開発機:Windows10 64bit Arduino IDE
検証機:Arduino Uno R3

開発方法

まず、私が何をやりたいかを明確にする必要がある。

  1. ArduinoでFM音源が制御できること
  2. FM音源再生ボードの仕様を決めること
  3. ブレッドボードによる試作をすること
  4. 試作後にプリント基板を設計すること
  5. 完成品は通販にて頒布をすること
  6. 本開発を通じてハード・ソフト開発を学ぶこと
  7. 3Dプリンタでケースを作ること ※余力があれば

バグや不具合があるけど動けばOKというものではなく、完成品のレベルは市販のものと遜色ないものを作ろう。初心者がいきなり掲げる目標じゃないかもしれないが、そういう気持ちで取り組まないと真剣になれない気がする。

1.ArduinoでFM音源が制御できること

そもそもArduinoではFM音源を活用できない、では何も始まらない。下調べとして、既にArduinoでそれを実現している人を探すことにした。すると、いとも簡単に作例のページが出てくるではないか。下にその一例を記載する。

■YMF825board+Arduinoで楽しいFM音源(導入編)
https://ameblo.jp/shigosencc/entry-12379344293.html

■MIDI再生:FM音源YMF825+Arduino編 – 7th-chord
http://7th-chord.jp/sara_tsukiyono/index.php?cl=rp&rp=zw&zw=05_01

これらを見て俄然やる気が出てきたのだが、「YMF825」という音源チップを使った作例が圧倒的に多いのがとても気になる。私のやりたい「YM2608B」の作例を探し出すのは難しく、あったとしても全然理解できないものだらけであった。

私は「YM2608B」を使ってデータを実チップ演奏をする同人ハードを、主にPCに接続して楽しんでいるのだが、前々からArduinoのような単体のハードウエア環境でも実チップ演奏を実現したいと考えていたのだ。しかし、どうやらそのチップを使った演奏をさせるのはハードウェア・ソフトウェアの開発が共に難しいようだ(その理由は後々書いていくつもりである)

それで、私が目をつけたのはこちらのモジュール。G.I.M.I.C Project 謹製「YMF288変換基板(GMC-MOD01)」というものだ。以前、入手だけはしておいて寝かしていたのを使ってみようと思ったわけだ。この変換基板の詳細について下記のURLにて確認いただきたい。

■GMC-MOD01説明 ※G.I.M.I.C Project ホームページより
https://gimic.net/index.php?plugin=related&page=GMC-MOD01%E8%AA%AC%E6%98%8E

写真左側「Arduino Uno Rev.3」右側「YMF288変換基板」

「YM2608B」と「YMF288」の違いはWikipediaを参照すると、

音源チップとしてはADPCM/PCM機能とCSMモード、プリスケーラ機能の削除に伴い、該当機能のレジスタについては互換性の維持のため存在はするが機能しなくなっている。

ADPCMが使えないのはとても残念だが、この「YMF288変換基板」を使えばArduinoからの制御が格段にしやすくなっているので、電子工作初心者の私でも使いこなせるかもしれない。よし、これで開発していこう!

というわけで、その②では「FM音源再生ボードの仕様を決めること」をするために必要な開発ツール(Arduino IDE、KiCADなど)の解説を含めていきたい。

コメント

タイトルとURLをコピーしました