アーケードゲームが輝いていたあのころと同じFM音源を鳴らしたい

# FM音源と私

この記事は[CrowdWorks Advent Calendar 2016](http://qiita.com/advent-calendar/2016/crowdworks)の13日目のおっさん向け記事です。

FM音源が好きですか。筆者は大好きです。ピコピコサウンド、チップチューンなどと巷では言われるような音色を鳴らすことができる音源のことですが、コンピューターらしさが色濃く残ったサウンドが逆に懐かしくゲーム・ミュージックのサントラを買い漁っていたころをの想いを呼び醒まします。

そんなFM音源のなかでもYM2151、通称OPMと呼ばれるYamaha製のFM音源チップが印象深く、SEGAのファンタジーゾーンやナムコの妖怪道中記などメーカーを越えて1980年代を代表するようなさまざまなアーケードゲームに採用されていました。OPMはYamahaが開発しているFM音源の中でOPL,OPLL,OPNから数えて４世代目にあたり電子音はもとよりピアノからシンバルのような音色を合成できるような当時としては表現力の高い音源でした。

![opm.png](https://qiita-image-store.s3.amazonaws.com/0/75104/2e2fa1a4-0e83-f1ed-8375-245da8dd88f4.png)


そんなOPMですが、1987年に発売されたシャープ製のX68000というパソコンにも搭載されていました。当時パソコン少年であった筆者は、電気店の店頭に展示してあるX68000でデモされるグラディウスなどアーケードから移植されたゲームを見てはそのグラフィックや音楽に魅了され憧れたものです。

それから数年たち新聞配達のアルバイトで資金をつくり、はじめて買った自分のパソコンがX68000XVIとなるのも自然な流れだったのです。すぐに火を入れられる状態というわけではありませんが、手放すのが惜しく部屋の隅に今でも鎮座しています。

![IMG_1905.JPG](https://qiita-image-store.s3.amazonaws.com/0/75104/3d942ee5-d430-fab1-8126-517310d78f03.jpeg)

今でこそ打ち込み音楽が一般的となりシーケンサーや弾いたものと演奏データにしたりすることがあたり前になりましたが、当時のパソコンを使った音楽制作といえどちらかと言うとゲームのBGMを鳴らす向けに開発された音源ドライバを用い、音楽データはMML(Music Macro Language)と呼ばれる音楽の演奏情報を記述するDSLのようなものをテキストエディタ記述するスタイルでした。

X68000にも草の根で開発されたMDXDRVやZ-MUSICといったドライバがあり、それぞれのドライバ向け音楽データも流通していて、当時のX68000ユーザーであれば曲データが入ったMOが残っていたりするのではないでしょうか。また筆者自身も音源ドライバを使ってバンドスコアを見ながらMMLにおこして打ち込んでみたり、ドラムがいない友達のバンドのドラムパートを打ち込んでバンドの手伝いなどをちょっとした趣味としてました。

このような音楽データを過去の資産として現代に活かそうとしたときでも、昨今は便利になっておりX68000のエミュレータを利用したり、MXDRVをWindowsやiOSに移植したものを利用することができます。またFM音源のエミュレーションも精度が高くなっていて、Yamahaが直々にOPMをソフトウェアとして実装したものもリリースされるなど通常の利用には困らない環境が整備されていると言えます。

一方でというか、だからこそエミュレーションではなくOPMの実機で当時のそのままで鳴らしてみたいという、特に理由もない想いもあったところ、願いが叶えられそうなハードウェアを見つけたので遊んでやろうというのがこの記事の趣旨です。

# G.I.M.I.C Project

さて、前置きが長くなりましたが、これからOPMを鳴らしてみようが本題です。鳴らすにはOPMを入手する必要がありますが、利用するのがG.I.M.I.C Projectが開発している同人ハードウェアです。[http://gimic.jp](http://gimic.jp/) にて情報が提供されています。G.I.M.I.C(以下GIMIC)は、[アキハバラ＠Beep](http://www.akihabara-beep.com/)のBASEショップなど通販でも買えます。

## GIMICの特徴

GIMICはマザーボードと音源部分が分かれており、OPMだけでなくOPNやSPC700[^1]などを差し替えて使える拡張性があります。PCからUSBで接続して制御できる他に、microSDメモリカードに音楽データを保存して読み取ることでGIMIC単体でも音楽再生が可能です。[2009年5月号のインターフェース誌に回路図が掲載](http://www.lcv.ne.jp/~mgs1987/gimic/microx68000.html)されるなど技術情報が公開されており最近でもファームウェアが更新されるなど開発が継続されています。

[^1]: スーパーファミコンに搭載されている音源

![IMG_1906.JPG](https://qiita-image-store.s3.amazonaws.com/0/75104/a9414936-15ab-42af-918c-a10a69346317.jpeg)

ショップにはいくつかのGIMIC関係のパーツが置いてあります。鳴らすのに必要な最低限のセットは以下になります。

* マザーボード(Lite/Standard/Professional)
* OPMユニット
* クリアケース

マザーボードは３種類のどれを選んでもいいですが、筆者は主に経済的な理由でStandardを選びました[^2]。その他に単体動作時の選曲を手軽したいという向きには専用の液晶ディスプレイのパーツもあります。

[^2]: 書いてるそばからStandard版が売り切れました。同人ハードは出会ったときに買わないとチャンスを逃してしまいますね。

# 組み立て

GIMICは半完成品となっていて自分で組み立てる必要があります。ハンダも不要なので組み立て所要時間は１時間ぐらいでした。届いたらまずすべてのパーツが揃っているか確認します。特にビス、ナット、ワッシャは予備が無い状態で封入されているので揃っているかどうかもそうですが焦って落として無くさないように気をつけます。

![IMG_1866.JPG](https://qiita-image-store.s3.amazonaws.com/0/75104/669ab264-27cb-cac7-02f3-9a80910011c6.jpeg)

2016年12月に届いたモデルに関して、基本的には公式サイトの[ここ](http://gimic.jp/index.php?%E7%B5%84%E7%AB%8B%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB%E4%B8%80%E8%A6%A7)にあるGMC-MB2_HardwareManual_rev1.3.pdfというマニュアルにそって作業すれば組み立てられますが、マニュアルにないちょっとしたことを捕捉していきます。

## 1.マザーボードの４箇所にナット、ワッシャ、ポリカワッシャを挟んで基盤に傷をつけないようにとりつけます
基盤の負担にならないようネジを締めすぎないのがポイントです。手で締めるぐらいでいいかもしれないですね。

![IMG_1871.JPG](https://qiita-image-store.s3.amazonaws.com/0/75104/2e9fa5a9-c6f4-e712-9906-97779a4c7421.jpeg)

## 2.音源モジュールと接続する用のモジュール接続ケーブルをマザーボードに接続します

どちらの端を接続しても向きは問題ないようです。

![IMG_1872.JPG](https://qiita-image-store.s3.amazonaws.com/0/75104/e4e728a2-0d7e-9fc6-9398-d004192906a5.jpeg)

## 3.マザーボードの穴が開いているところを通してアナログケーブルを接続します

ケーブルが固いのでちょっと力が入ります。

![IMG_1873.JPG](https://qiita-image-store.s3.amazonaws.com/0/75104/7b715d17-6df7-6dc8-2d1d-e5ad0236b0ff.jpeg)

## 4.OPMモジュールを取り出します

輝くYM2151。

![IMG_1874.JPG](https://qiita-image-store.s3.amazonaws.com/0/75104/c98f42b4-15f3-4b19-1cfd-9d7d7f9fcc3f.jpeg)

## 5.OPMモジュールにモジュール接続ケーブルとアナログケーブルをつなげて最初に取り付けたビスと穴を合わせて取り付けます

ナットを締めすぎるとはまらないことがあります。

![IMG_1875.JPG](https://qiita-image-store.s3.amazonaws.com/0/75104/c8f9293a-2039-a571-c29a-3778a7700c05.jpeg)


## 6.４箇所のナットにポリカワッシャをはさんでローレットナットで締めます

![IMG_1876.JPG](https://qiita-image-store.s3.amazonaws.com/0/75104/7a6938c4-81d3-1f54-5871-0dedac7a744c.jpeg)

## 7.アクリルケース用の手回しネジにポリカワッシャをつけます

無理にはめずにネジに合わせて回し入れるとよさそうです。

![IMG_1878.JPG](https://qiita-image-store.s3.amazonaws.com/0/75104/e6bfd5b4-0bb1-9d24-1ac0-ecbb3b07c163.jpeg)

## 8.アクリルケースにぴったりくっついている紙を剥がします

ガムテープで剥がしましたがデザインが施された部分が残るので爪で剥がしました。軽く湯煎するとはがしやすいらしいです。

![IMG_1879.JPG](https://qiita-image-store.s3.amazonaws.com/0/75104/35423dae-9766-9e6e-270f-f7c6344999f5.jpeg)

![IMG_1880.JPG](https://qiita-image-store.s3.amazonaws.com/0/75104/4e92743e-bdac-7d4e-cbad-5d50d386c580.jpeg)

ガムテープ張ったところ。
![IMG_1882.JPG](https://qiita-image-store.s3.amazonaws.com/0/75104/1e96e152-943d-8b38-dbce-02c39908c634.jpeg)

デザイン部分が残ったところ。
![IMG_1884.JPG](https://qiita-image-store.s3.amazonaws.com/0/75104/1d97f583-47ca-a009-ad1f-55d0023dad18.jpeg)


爪で削ったところ。
![IMG_1888.JPG](https://qiita-image-store.s3.amazonaws.com/0/75104/32b358f7-829c-cf54-ad0f-2cc06f54267f.jpeg)


## 9.へこみ部分とスイッチ部を合わせてアクリルパネルを固定します

![IMG_1889.JPG](https://qiita-image-store.s3.amazonaws.com/0/75104/b416878d-f894-c6c6-dd05-70edc81d1a52.jpeg)

完成！

![IMG_1890.JPG](https://crowdworks.qiita.com/files/b930b0a3-db96-8461-7254-e4472838c6b7.jpeg)

USBに接続してスイッチを押して青LEDが点灯すれば動作しているかと!

![IMG_1890.JPG](https://qiita-image-store.s3.amazonaws.com/0/75104/fb0bbc1b-cb6f-bfa6-5944-ee9fb64de047.jpeg)

# macOSからGIMICを使ってみる

GIMIC利用環境としては正直Windowsのほうが充実しており[対応ソフト](http://gimic.jp/index.php?USB%E5%88%B6%E5%BE%A1FW%20-%20%E5%AF%BE%E5%BF%9C%E3%82%BD%E3%83%95%E3%83%88)がいくつかある状況です。とはいえ筆者の身近なのはMacなので、macOS環境から利用してみます。

## macOSからファームウェアの更新

GIMICは初回の利用時にファームウェアの更新を推奨しています。最近ではmacOSでのファームウェア更新にも対応しており、[こちらの手順どおり](http://gimic.jp/index.php?%E3%83%95%E3%82%A1%E3%83%BC%E3%83%A0%E3%82%A6%E3%82%A7%E3%82%A2%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88#t08efd13)特に迷うことなくできました。

まずSilicon LabsからmacOS用のドライバをダウンロードしてインストールして再起動します。再起動は促されないので注意。

次にGIMICのページからGIMICUpdaterをダウンロードして右クリックで開くを選択して起動します。

![スクリーンショット 2016-12-11 15.42.29.png](https://qiita-image-store.s3.amazonaws.com/0/75104/d2c702e2-a43f-92a9-b959-ac222e24ef6f.png)

ファームウェアアップデートモードになっていないとこのようにアップデート開始ボタンが押せなくなります。

![スクリーンショット 2016-12-11 15.55.08.png](https://qiita-image-store.s3.amazonaws.com/0/75104/c334bd1c-fadd-b93f-989a-5fa66f92d5fa.png)

ドライバが正常でGIMICもアップデートモードになっていればアップデート開始ボタンが押せます。
![スクリーンショット 2016-12-11 16.03.45.png](https://qiita-image-store.s3.amazonaws.com/0/75104/34f7c58f-e2aa-3851-4d5f-dea0dacc2699.png)


アップデート中。

![スクリーンショット 2016-12-11 16.04.06.png](https://qiita-image-store.s3.amazonaws.com/0/75104/4c78dd7f-4409-e566-ff41-a61a7346533c.png)

完了です。
![スクリーンショット 2016-12-11 16.04.37.png](https://qiita-image-store.s3.amazonaws.com/0/75104/d1c4b8d3-7f29-7221-f55b-ec5cb233e559.png)


## macOSから操作してみる

macOSやLinuxからアクセスするには `screen` でシリアルコンソール接続するのが手軽かと思います。mdxファイル名の表示がShift_JISで送られてくるのでターミナルをShift_JIS表示設定する必要があります。

正常に接続できているか以下のコマンドで確認できます。

```
ls /dev/tty.*
```

で `/dev/tty.SLAB_USBtoUART` が見つかれば正常に接続されています。見つからなければドライバがインストールされているか正しく動いているか、ケーブルの不良などが考えられます。

見つかったなら以下のように`screen /dev/tty.SLAB_USBtoUART 230400`を起動すると接続できます。

![スクリーンショット 2016-12-12 15.41.19.png](https://qiita-image-store.s3.amazonaws.com/0/75104/3709232a-f67f-b429-bbb0-fe634c331016.png)

真っ白(あるいは真っ黒)な画面で固まっても焦らずエンターを押します。

![スクリーンショット 2016-12-12 15.41.28.png](https://qiita-image-store.s3.amazonaws.com/0/75104/1588b60f-bbb0-95f3-ece1-de34b4f99be5.png)

microSDメモリを指してスタンドアローンモードにしていれば次のファイルセレクト画面がでます。

![スクリーンショット 2016-12-13 23.03.06.png](https://qiita-image-store.s3.amazonaws.com/0/75104/8a52c18d-62f4-d336-4611-8107b92a1929.png)

OPMそのものを鳴らせる環境を構築することができました。ここから過去の資産を発掘したり、新たなハックしたり可能性が広がります。これを足がかりにお正月のネタに実行環境を整えていこうと思います。

# 参考文献

* [http://gimic.jp](http://gimic.jp/)
* [第507回：マニアックなFM音源がiPadで復刻
～DETUNEとヤマハが組んだアプリ「iYM2151」 ～](http://av.watch.impress.co.jp/docs/series/dal/534281.html) (AV watch)
* [ＧＩＭＩＣ用 X68000ケース製作への道のり１](http://www.lcv.ne.jp/~mgs1987/gimic/microx68000.html)


# 明日は

@yo-iida さんが書く予定です。おつきあいありがとうございました。