FM3812 FM音源YM3812(OPL2)のMIDI音源を作ってみた

エアバリさんのブログの書き込みを見て、これは行くしかない!と思いつつ、広島から秋葉原は遠く、なかなか機会もあるわけもなく指をくわえて見ているだけだったのだが、先月末に出張があってようやくゲットしたFM音源チップ!!

proxy_006

自分はYM2151,YM3812,YM2608とDACをゲットしたのだが、昔キャプテンシステムの曲を作ったり、曲を編集するソフトウエアの開発をしていたこともあって2オペレータのFM音源が懐かしく、YM3812でMIDI音源を作ってみることにした。

まずは回路図をつくるのだが、資料がない!!何せ20年以上前のチップだけに資料が無い!データシートはあったが、肝心のアプリケーションマニュアルがない。これではレジスタの詳しい内容もわからん!ググるとそれなりに情報はあるが、決定打はなく一番役たったのが広告を抜いて保管してあるトランジスタ技術の1988年9月号だというオチw 特に、YM3812だけかもしれないが、データシートのピン配置にミスがあって、VccがVssとなっている。まぁ、このあたりは見ればおかしいことにすぐ気づくと思うが、全くの初心者だと電源供給なしにこの石を動かそうとするかもしれないw(最近は電源も繋がずに「動きません」という学生もいるのでw)

で、完成した回路図がこれ。

fm3812sch

ほぼ、データシートどおりの配線だけど、要点としては・・・

・PICはPIC16F1829を使用している。690でメモリ不足や能力不足になる前に最初からF1を使用することにした

・フォトカプラと発振器は手持ちを流用。TLP-552とか専用の発振器でも問題はないでしょう。

・MIDI Outはオプション。

・EEPROMはGM互換128音色を搭載するときに使用予定。1音色16バイト以下なので16kbitで足りそうだが、音色名まで保存したいので32kにしておく。その前に今時32kも16kも値段変わらないんじゃ???と思ったら秋月では64k以上しかありませんw

・LCDはデバッグ用に使っているが、最終的には発音情報を表示できたらかわいいと思う。これもI2Cで。

・電源投入時にバグることがあったので、リセット回路を入れてある。PICからリセットを送れるようにしてもよいと思う

まずは試作と言うことで、ブレッドボードで製作するが、実体配線図も描いておく。

midfm3812

結構、配線数が多いので、あらかじめ実体配線図があると、あとでの対処がしやすいはず。

で、次はPICのプログラムを作るのだが、その前にMIDIのインプリメンテーションチャートを作って仕様とする。

fm3812up

fm3812インプリメンテーションチャートのPDFダウンロード

もともとOPL2は、モノ6音+リズム5音なので、音声部は単音で6チャンネル分、リズム部はチャンネル10で5音ポリにすることにした。リズムはある程度受信するが、5種類しか無いので同じ系列の音はすべて同じ代替音が鳴るようにしている(Open HHもClose HHも同じHH音が出る)。

ベロシティやボリュームは、もともとのチップが対応していないので対応しない。

音色は、とりあえずPICのROMに入るOPLL互換の16音色だけにしておき、あとで128音色分入れるときには外付けのEEPROMに格納することにした。

これらの仕様を基にして、以前YMZ294のSSG音源を製作したときと同様に20年以上前に作ったMIDI解析ライブラリを用いてMPLAB8+XC8でプログラム作成する。

midfm3812_MPLAB

で、完成したプログラムがこれ(Fm3812.hex)(例によって拡張子をhexに変えて保存してください)

(2014.6 アップデート版を公開しました)

完成したブレッドボードがこれ。

IMG_4199

LCDには、MIDIの受信データがだらだら表示されるが、最終的にはチャンネルごとの発音状況を表示したい。ちなみにEEPROMは、まだ載せていない。手持ちにあるのはFONTデータ格納用に買ったデカいチップしかないので、勿体なくて載せていない。でも、たぶん新しく買わないだろうからGM化したときにはデカいのが搭載されるであろうw

デモ曲はいつもの「On the sunny shore」(ききょうや作編曲)。ただし、和音が出ないので、チャンネルを分けてばらしているのと、リズムが5種類しか無いので、鳴らない音は移動させている。TOM TOMは1つしかないので、連続しているところは同じ音の羅列になってしまっている。残念。HH系はGateタイムを調整すれば多少音色の変化があるのでライドシンバルとハイハットの時ではGateタイムを変えてある。

DominoOPL2

デモ曲はPCで録音して、さらに動画もつくってみた。

ポータサウンドでキャプテンの曲を作っていた時代を懐かしむことができたw

あの時代にキャプテン用に作った曲をいろいろ流してみようっと!

    • Koh
    • 2013年 10月 22日

    なつかしいね。

  1. Kohさん、懐かしいでしょう?当時、キャプテン用に作ったデータはまだちゃんと持っています。コンバートして鳴らしてみましたけど、なかなかでしたよ。意外と音数が少ない方が聞いていても疲れないので、BGMとしてはこれくらいがよいのかもしれませんね。

    • osaanmed
    • 2014年 5月 19日

    TwitterのTLで触発されて、作ってみました。回路図通りで一発で動きました!ありがとうございます!ただ読み違えだと申し訳ないのですが、実体配線図のオペアンプの8ピンが7ピンに接続されている様に見えます。間違ってたら申し訳ありません。

  2. osaanmedさん、こんにちは。動いて良かったですね。しっかり懐かしんでください。ちまたではFM音源はゲーム音楽を鳴らすのが流行りみたいなのですが、私はゲーム音楽にはあまり縁がなかったので、楽器としての方がメインです。実はGM音色版も完成しているのですが、欲しい人はいますかねぇ?
    実体配線図ですが、右から来るラインが8ピンで左から来るラインが7ピンですね。混み合っているのでくっついているように見えますが、別ラインです。この実体配線図でたぶん合っているとは思いますが、回路図やデータシートを優先して、実際の配線をチェックするのが良いと思います。

    • osaanmed
    • 2014年 5月 20日

    きょうや様、お返事ありがとうございます。確かに、見なおしたら仰るとおりになっていました。私の誤った指摘に、お時間を取らせてしまい申し訳ありません。ご親切にありがとうございます!この様に作品を公開されている方を常に尊敬しております。
    また大変恐縮ですが、私もGM音源欲しいです!実はROMも用意してあります。
    FM音源いいですよね。なんとも和みます。今度さらに時間を遡り、YM2151に挑戦する予定です。

  3. GM音源の要望があるみたいなので、公開の準備をしたいと思います。今、仕事がたてこんでいるので来月あたりには公開したいと思います。当初は拡張ROMを使用する予定だったのですが、音色データだけならPIC内に埋め込むことができたのでその状態ですwついでにOPL3版やOPM版(ドラムなし)もつくってはいるのでちょっと待ってくださいね。

    • osaanmed
    • 2014年 5月 22日

    おお!ありがとうございます!楽しみに待っております!

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。