play a music on luna-88k2
TRANSCRIPT
![Page 1: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/1.jpg)
OSC 2016 Nagoya
OpenBSD/luna88kのご紹介
FM音源の調べ OSC版〜 Play a music on LUNA 〜
Nagoya *BSD Users' GroupKenji Aoyama / ⻘⼭ 健治
Twitter: @ao_kenji
![Page 2: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/2.jpg)
2
LUNAとは?
• LUNAシリーズ– オムロン株式会社が1980年代後半〜90年代
初めに販売していたワークステーション• LUNA, LUNA-II
– CPU:モトローラ68030/68040(m68k)– NetBSD/luna68kが動きます
• LUNA-88K, LUNA-88K2 – CPU:モトローラ88100(m88k) MP対応– OpenBSD/luna88kが動きます
⾒かけたら保護を!
![Page 3: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/3.jpg)
3
LUNA-88K2:こんなマシンです
前面の液晶パネル
個々のCPU動作状況が分かる
LEDマルチプロセッサ対応
比較的コンパクトな筐体(ご家庭でもOK)
CPU動作状況が分かる電源ボタン
Cバススロット(88K2のみ)
![Page 4: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/4.jpg)
4
LUNAでCバス拡張ボードを使う話
• 昨年のOSC Nagoyaで発表しました• 今日は、Cバス拡張ボードのFM音源をい
じる話です
![Page 5: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/5.jpg)
5
ここから本題:LUNAと音源
• 初代LUNA(68K無印)にはSSG(YM2149)が載っていたようです– ユーザランドからどうやって使っていたのか
気になります…
• 88K2のCバススロットに装着したPC-9801-86(86音源ボード)にもFM音源チップが載ってますよ?– PCM部分のドライバ作った後放置してました
![Page 6: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/6.jpg)
6
FM音源とは?(ざっくり)
• FM(Frequency Modulation)を応用した音色合成チップ
• 少ないパラメータで色々な音が出せる– マシンパワー・メモリが少なくても良い
• ’80〜’90年代のパソコンで流⾏– その後、いわゆるガラケーでも使われていた
• 今どきはソフトウェアでリアルタイム音色合成してエミュレーションできるようです
![Page 7: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/7.jpg)
7
実チップを楽しむコミュニティも
Project RE:birth
G.I.M.I.C Project
http://ym2203.com/rebirth/
http://gimic.net/
![Page 8: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/8.jpg)
8
YM2608(OPNA)とは?
• 86音源ボードに搭載されているFM音源チップ
• FM音源部– 4オペレータ– 同時発音数6音 ステレオ
• SSG– 3音モノラル
• ADPCM• リズム音源
画像出典: Wikipedia
本日のデモ機には後継チップのYMF288が載っています
![Page 9: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/9.jpg)
9
OPNAのいじり方
• アドレスレジスタとデータレジスタによる間接アクセス方式
• pcex(4)ドライバを使えば、ユーザランドからアクセスできる
• 音色を設定して、Key-On/Offしてやると一応音がでた!
出展︓「YM2608 OPNA アプリケーションマニュアル」ヤマハ株式会社
![Page 10: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/10.jpg)
10
さて、演奏は?
• せっかくなので何か曲を演奏させよう• コンピュータで演奏と言えば、
MML(Music Macro Language)でしょ– こんなやつです
• parserを自分で作らないといけない?• と思って色々⾒ていたら…
t120 o4 l4 aab2 aab2 ab>c<b ab8a8f2 ecef ee8c8<b2> ab>c<b ab8a8f2 ecef ee8c8<b2> aab2 aab2 efb8a8f e1
![Page 11: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/11.jpg)
11
いいもの発⾒: A tiny MML parser
http://www.cubeatsystems.com/firmware/tinymml/
![Page 12: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/12.jpg)
12
A tiny MML parser: Features
• Really simple.– The API has only three functions.– It consists of only four small modules.
• Highly portable.– Compatible with C89.– No dependencies. (even libc!)– No dynamic memory allocation. (no need
a operating system!)• …
http://www.cubeatsystems.com/firmware/tinymml/
![Page 13: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/13.jpg)
13
演奏プログラムを作ってみた
https://github.com/ao-kenji/opnaplay/
• ‘A tiny MML parser’ でparseし、OPNAのレジスタを叩いて演奏します
※FM音源の音色パラメータは、VALSOUND FM-Library / (C)Takeshi Abo.http://www.valsound.com/のものを許可を得て使用しています。
![Page 14: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/14.jpg)
14
さらに…
• 単音では寂しいので和音も鳴らしてみたい
• 過去の資産(作品)が演奏できないか?– PC-9801用の音源ドライバ(FMP, PMD)が有
名なようだが、ソースは公開されてなさそう• PC-98ユーザじゃなかったのでよく知りません…
– 「S98フォーマット」なるものがあるらしい
![Page 15: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/15.jpg)
15
S98フォーマットとは?S98はOPNA/OPNを発祥とした音源ログフォーマットです。
[HEADER FORMAT](略)
[DUMP DATA FORMAT]
00 aa dd DEVICE1(normal) aa:レジスタアドレス dd:データ01 aa dd DEVICE1(extend) OPNA1つの場合、00と01を使う02 aa dd DEVICE2(normal)03 aa dd DEVICE2(extend)...FF 1SYNCFE vv nSYNCFD END/LOOP 演奏中のOPNAレジスタ値のダンプみたいなもの︖
このデータをレジスタに書き込んでやれば曲が再⽣できる︖
http://www.vesta.dti.ne.jp/~tsato/arc/s98spec3.zip
![Page 16: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/16.jpg)
16
適当にparseしてOPNAを叩くswitch (buf[0]) {case 0x00:case 0x01:
if (fread(&buf[1], 1, 2, fp) != 2)errx(1, "data read failed");
if (buf[1] == 0x27)buf[2] &= 0xf3; /* disable timer on luna88k */
if (buf[0] == 0)opna_write(buf[1], buf[2]);
elseopna_write_ex(buf[1], buf[2]);
break;(略)default:
errx(1, "strange S98 command 0x%02x", buf[0]);break;
} ワンポイントレッスン︓FM音源チップのタイマ割り込みは使わない!
![Page 17: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/17.jpg)
17
こっちも演奏プログラム作ってみた
https://github.com/ao-kenji/s98play/
展示ブースでのデモ曲は、Project RE:birthのサンプルを使用しています。
![Page 18: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/18.jpg)
18
まとめ(1)
• Cバス拡張ボード上のFM音源チップで遊んでみた– MMLで単音の任意演奏– S98フォーマットデータで和音作品演奏
• 非⼒なマシンでも豊かな音が出せる– 20世紀テクノロジーに感激
• 処理が重くなるとテンポがずれる– ご愛敬ということでお許しください
• 夢の「マルチメディア」にまた近づいた!?
![Page 19: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/19.jpg)
19
まとめ(2)
• 10年以上やってるけど、何が面⽩いのか?• メーカーが想定していないことを実現す
る– 別のOSを動作させる– 非純正ハードを動作させる– そのために試⾏錯誤しながらソフトを書く– これが、もどかしい時もあるけれど楽しい
• 最後は「愛」と「執着心」:-)
![Page 20: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/20.jpg)
20
謝辞
• 荒尾さん・蛯原さん・江富さん– LUNA-88Kを送付いただきました
• 筒井さん– 何回もの電源修理 & いつもアドバイスありが
とうございます• Twitterでfavしていただける方
– 励みになります• 家族
– 怪しげな趣味に対する理解に感謝!
![Page 21: Play a music on LUNA-88K2](https://reader034.vdocuments.mx/reader034/viewer/2022042611/5886f7741a28ab4e3a8b4c1b/html5/thumbnails/21.jpg)
21
あとはNBUGブースで…
<昨年の展示>
Nagoya *BSD Users' GroupKenji Aoyama / ⻘⼭ 健治
Twitter: @ao_kenji
お待ちしてま〜す︕