Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10

13
NBUG 2015年10⽉例会 FM音源の調べ on LUNA Nagoya *BSD Users' Group Kenji Aoyama / ⻘⼭ 健治 Twitter: @ao_kenji 夏休み自由研究

Transcript of Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10

Page 1: Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10

NBUG 2015年10⽉例会

FM音源の調べ on LUNA

Nagoya *BSD Users' GroupKenji Aoyama / ⻘⼭ 健治

Twitter: @ao_kenji

夏休み自由研究

Page 2: Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10

2

きっかけはカーネル/VM探検隊@名古屋

Page 3: Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10

3

LUNAと音源

• LUNA(68K無印)にはSSG(YM2149)が載っている–ユーザランドからどうやって使えたのだろう

か?

• 88K2に装着した86音源ボードにもFM音源チップが載ってます

Page 4: Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10

4

FM音源とは?(ざっくり)

• ’80〜’90年代のパソコンで流⾏– その後、いわゆるガラケーでも使われていた

• FM(Frequency Modulation)を応用した音色合成方式

• 少ないパラメータで色々な音が出せる– マシンパワー・メモリが少なくても良い

• 今でも愛好者あり?

Page 5: Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10

5

YM2608(OPNA)とは?

• 86音源ボードに搭載されているFM音源チップ

• FM音源部– 4オペレータ– 同時発音数6音 ステレオ

• SSG– 3音モノラル

• ADPCM• リズム音源

画像出典: Wikipedia

Page 6: Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10

6

OPNAのいじり方

• アドレスレジスタとデータレジスタによる間接アクセス方式

• 例によってC-bus専用mmapすれば、とりあえずいじれる

• 音色を設定して、Key-On/Offしてやると一応音がでた!

出展:「YM2608 OPNA アプリケーションマニュアル」ヤマハ株式会社

Page 7: Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10

7

さて、演奏は?

• せっかくなので何か曲を演奏させよう• コンピュータで演奏と言えば、

MML(Music Macro Language)でしょ• parserを自分で作らないといけない?

• と思って色々⾒ていたら…

Page 8: Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10

8

いいもの発⾒: A tiny MML parser

http://www.cubeatsystems.com/firmware/tinymml/

Page 9: Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10

9

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 10: Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10

10

A tiny MML parser: API

http://www.cubeatsystems.com/firmware/tinymml/api.html

Page 11: Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10

11

演奏プログラムを作ってみる

https://github.com/ao-kenji/opnaplay/

• ‘A tiny MML parser’ でparseし、OPNAのレジスタを叩いて演奏

Page 12: Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10

12

演奏例

% ./opnaplay 't120 o4 l4 aab2 aab2 ab>c<b ab8a8f2 ecef ee8c8<b2> ab>c<b ab8a8f2 ecef ee8c8<b2> aab2 aab2 efb8a8f e1'

※FM音源の音色パラメータは、VALSOUND FM-Library / (C)Takeshi Abo.http://www.valsound.com/のものを許可を得て使用しています。

http://www.nk-home.net/~aoyama/tmp/sakura-2.mp3琴http://www.nk-home.net/~aoyama/tmp/sakura-1.mp3フルートhttp://www.nk-home.net/~aoyama/tmp/sakura-0.mp3ピアノ

「さくらさくら」

Page 13: Using FM-synth chip on LUNA-88K2, at NBUG meeting 2015-10

13

To be continued ?

• 単音では寂しいので和音にするには?

• 過去の資産(作品)が演奏できないか?– PC-9801用の音源ドライバ(FMP, PMD)が有

名なようだが、ソースはなさそう– OPNAのレジスタ出⼒ダンプのような「S98

フォーマット」があるようなので研究中