カテゴリー
PC88

MUCOM88で遊んでみた

最近になってMUCOM88の存在を知って、ずっと弄ってる。MUCOM88で遊んでるとあっという間に時間が過ぎていく。。面白すぎです。

Open MUCOM88は、NECのパソコンPC-8801シリーズで動作していた、古代祐三氏によるFM音源のドライバー、MUCOM88のソースコードを元にオープンソースのもと活用するプロジェクトです。
オリジナルのMUCOM88ディスクイメージは、株式会社エインシャント様のサイトにて公開されています。

MUCOM88 Windowsは、MUCOM88をWindows上で動作させるためのシステムです。コマンドライン版、GUI版の両方が用意されています。PC-8801のBIOSやディスクイメージは必要ありません。

https://onitama.tv/mucom88/

平たく言うと、MUCOM88はMML(Music Macro Language)という記述で音楽を作るというソフト。昔はDTMをするためには高価なシンセやMIDIシーケンサーで実現するしかなかった。もちろんDAWソフトなんてものはない。そんな時代に打ち込みでFM音源がプログラムで鳴らせる!という夢のしくみだったわけです。そんな青春の思い出PC-8801mkIISRの日々。というわけで、MUCOM88のおかげで懐古趣味が再燃しているわけでございます。

アナログレコードを回す感覚のように、プログラムから音楽を打ち込むという感覚は、いまの人にも意外と新しい体験かもしれません。

まずはPC-8801感を出したいので、MUCOM88に設定するフォントを変更。

MUCOM88のFM音源プリセット音色名の一覧がついてなかったのですが、付属のFmToneEditor.exeで確認できます。

FmToneEditor

voice.datが音色データファイルということで、バイナリーエディタで中をのぞいてみる。

00000000  00 32 71 32 72 16 15 00  00 5f 5f 52 52 0c 0c 08  |.2q2r....__RR...|
00000010  08 00 00 00 00 16 26 16  16 2c ff ff ff ff ff ff  |......&..,......|
00000020  01 00 01 02 07 05 04 21  00 1f 1f 1f 1f 00 00 00  |.......!........|
00000030  00 00 00 00 00 06 06 06  06 29 64 67 74 31 20 20  |.........)dgt1  |
00000040  ff 3a 30 30 30 24 12 2d  00 1f 5f 1f 5f 12 0a 0e  |.:000$.-.._._...|
00000050  0a 00 04 04 03 26 26 26  26 38 00 00 00 00 00 00  |.....&&&&8......|
00000060  ff 12 58 12 52 1e 0d 21  00 1f 1f 1f 1f 00 00 00  |..X.R..!........|
00000070  00 00 00 00 00 06 06 06  06 29 00 00 00 00 00 00  |.........)......|
00000080  ff 64 62 62 62 37 0a 25  00 c3 c3 c3 03 00 00 07  |.dbbb7.%........|
00000090  00 02 02 02 02 14 14 14  14 3e 62 61 63 6b 31 20  |.........>back1 |
000000a0  ff 44 48 48 42 08 00 00  00 1f 1f 1f 1f 0a 0a 0a  |.DHHB...........|
000000b0  0a 00 00 00 00 f2 01 01  01 06 6d 61 69 6e 32 20  |..........main2 |
000000c0  ff 41 42 41 42 21 00 00  00 13 13 13 13 09 09 09  |.ABAB!..........|
000000d0  09 00 02 00 00 14 34 23  23 2d 6d 61 69 6e 33 20  |......4##-main3 |
000000e0  ff 23 74 23 74 0c 10 0c  0c 1f 1f 12 1f 05 00 10  |.#t#t...........|
000000f0  10 06 00 01 01 10 00 36  36 2c 37 74 68 76 30 34  |.......66,7thv04|
00000100  ff 06 63 36 33 28 26 33  00 df cf 53 8e 08 0a 06  |..c63(&3...S....|
00000110  03 02 00 00 00 e2 22 f2  03 3b 62 61 63 6b 32 20  |......"..;back2 |
00000120  ff 12 02 76 72 1a 28 1e  00 91 16 1a 13 05 03 04  |...vr.(.........|
00000130  03 01 00 00 00 18 28 18  28 3a 62 72 61 73 73 31  |......(.(:brass1|
00000140  ff 3f 7f 30 7f 00 00 00  00 1f 1f 1f 1f 00 00 10  |.?.0............|
00000150  15 00 0f 04 0f 00 f0 df  ff 3c 00 00 00 00 00 00  |.........<......|
00000160  ff 1f 3f 70 3b 00 18 00  00 1f 1f 1f 1f 0c 0c 13  |..?p;...........|
00000170  0f 00 00 09 08 16 16 49  29 3c 00 00 00 00 00 00  |.......I)<......|
00000180  ff 63 65 51 63 16 19 0f  00 1d ca 1d 5e 04 04 04  |.ceQc.......^...|
00000190  04 01 04 03 03 20 30 03  03 1c 00 00 00 00 00 00  |..... 0.........|
000001a0  ff 21 53 41 11 20 1c 0a  00 df df 99 99 00 00 07  |.!SA. ..........|
000001b0  08 08 08 07 06 40 40 37  37 3c 61 70 31 20 20 20  |.....@@77<ap1   |
000001c0  ff 6f 0f 0f 6f 00 00 00  00 1e 0a 14 02 10 14 14  |.o..o...........|
000001d0  14 04 14 14 0e a7 07 07  07 07 6d 75 73 68 69 31  |..........mushi1|
000001e0  ff 3f 30 31 33 25 14 2a  00 44 44 44 4a 0a 0c 0a  |.?013%.*.DDDJ...|
000001f0  0c 02 02 02 02 04 03 04  03 3e 64 6f 77 6e 20 20  |.........>down  |
00000200  ff 6f 05 03 6f 0f 19 00  0f 02 0e 04 0a 02 0e 08  |.o..o...........|
00000210  04 02 05 03 0a 07 07 07  17 36 75 66 6f 20 20 20  |.........6ufo   |
00000220  ff 30 60 60 64 0e 06 14  00 4c 9d 50 89 05 06 04  |.0``d....L.P....|
00000230  04 01 05 01 1f 55 25 25  a8 3a 63 61 72 20 20 20  |.....U%%.:car   |
00000240  ff 6f 0f 0f 66 31 11 2c  00 1f 1f 1f 9f 1a 11 1a  |.o..f1.,........|
00000250  0c 05 01 09 01 0b a7 0b  f8 23 6c 61 73 65 72 31  |.........#laser1|
00000260  ff 08 10 04 40 1f 1f 1b  00 92 92 92 92 02 02 02  |....@...........|
00000270  02 00 00 00 00 07 05 07  06 04 6c 61 73 65 72 32  |..........laser2|
...

公式資料から、データ構造をPythonを使って確認。たぶんこんな感じかな? 32byteで1音色ぽい。

AR:Atack Rate    DR:Decay Rate    SR:Sustin Rate   RR:Release Rate    
SL:Sustin Rate   TL:Total Level   KR:KeyScale Rate ML:Multiple 
DT:Detune        FL:Feedback      AL:Algorithm     TN:Tone Name

00000260
?         DT1  ML1  DT3  ML3  DT2  ML2  DT4  ML4  TL1       TL3       TL2       
1111 1111 X000 1000 X001 0000 X000 0100 X100 0000 X001 1111 X010 1000 X001 1110 
ff        08        10        04        40        1f        1f        1b        

00000268
TL4       KR1 AR1   KR3 AR3   KR2 AR2   KR4 AR4   DR1       DR3       DR2              
X000 0000 10X 10001 10X 10001 10X 10001 10X 10001 XXX0 0010 XXX0 0000 XXX0 0000 
00        92        92        92        92        02        02        02        

00000270
DR4       SR1       SR3       SR2       SR4       SL1  RR1  SL3  RR3  SL2  RR2  
XXX0 0000 XXX0 0000 XXX0 0000 XXX0 0000 XXX0 0000 0000 0111 0000 0101 0000 0111 
02        00        00        00        00        07        05        07       

00000278
SL4  RR4  FB   AL   TN1       TN2       TN3       TN4       TN5       TN6       
0000 0110 X000 X100 0110 1100 0110 0001 0111 0011 0110 0101 0111 0010 0011 0010  
06        04        6c        61        73        65        72        32        

最後の6byteが音色名のようなので書き出してみる。ん?@4~@11までの音色名がFmToneEditorと違う? なぜ…

ToneNo	Name	TmToneEditor
001	dgt1	dgt1
002	......	
003	......	
004	back1	g2bs1
005	main2	g2bs2
006	main3	perobr
007	7thv04	metal
008	back2	heavy
009	brass1	hardbr
010	......	harps1
011	......	hard4h
012	......	
013	ap1	ap1
014	mushi1	mushi1
015	down	down
016	ufo	ufo
017	car	car
018	laser1	laser1
019	laser2	laser2
...

結局、調べてみたけれどわからなかった!というオチですみません。教えて偉い人!

(おまけ)バッハのインベンション第13番打ち込んでみました。

Invention No. 13 in A Minor by Johann Sebastian Bach, BWV 784, from Fifteen Two-Part Inventions
#mucom88 1.7
#title BWV.784 Inventio 13
#composer Johann Sebastian Bach
#author @navsite
#voice voice.dat
#date 2020/04/24
#comment 

#*1{C150t200}
#*2{C150t180}
#*3{a>c<}
#*4{b>d<}

#*11{*2re*1*3beb>dc8e8<g+8>e8<ae*3beb>dc8<a8r4r>ece<*3egf8a8>d8f8.d<*4gbdfe8g8>c8e8.}
#*12{c<*3f8>d8.<bgbe8>c8.<afad8b8>c8r4.r<g>ced<g>dfe8g8<b8>g8c<g>ced<g>dfe8c8f8e8}
#*13{>c<aeace<a>cd8f+8a8>c8<bgdg<*4gb>c8e8g8b8}
#*14{af+d+f+<b>d+<f+ag8>g8.ece<a8>f+8.d<*4g8>e8.c<a>c}
#*15{<f+>gf+ed+f+<b>d+e8r4.rgb-gegc+egece<a>r8.rfafdf<b>dfd<*4g>r8.regece<a>cd+c<*3f+>r8.}
#*16{rdfd<*4g+*4bg+ber8.re*3beb>dc8<a8g+8e8}
#*17{a>cec<*3f+*3af+ad+>c<bag+*4bg+bdfg+fdf<b>fed}
#*18{ceaece<a>cd+c<*3f+>c<bag+8>b8g+8e8re*3beb>d}
#*19{c<a>ced<b>dfecegfedc<b>cdefdg+dbdcafd<*4g+b>c<aeabg+aece*1<a4>}
#*20{*2a8*1>a4g+8ae*3beb>cc8<a8g+8e8ae*3beb>dc8<a8>c8<a8>d<afade<*3b8>d8g8b8.gegce<gb}
#*21{a8>c8df<*4g8b8>ce<*3f8d8g>gfgcg>ced<g>dfe8c8<b8g8>c<g>ced<g>dfe8c8r4rgegce<gb}
#*22{a8>c8e8g8f+adf+<a>d<f+ag8b8>d8f+8egce<g>c<egf+8a8b8>d+8rece<a>cegf+d<*4gb>df+ec<*3f+a>}
#*23{c8.<b>c<ab8<b8>e>e<bge<bgbe8>e8g8b-8c+8r8.>gfed8<d8f8a-8<b8r8.>>fedc8<c8e8f+8<a8r8.>>ed+c+}
#*24{<b8<b8>d8f8<g+8>r8.>dc<b>c8<a8g+8e8ae*3beb>d}
#*25{ceaece<a>cf+*3af+ad+f+e8g+8b8g+8e8<b8g+8e8}
#*26{<a8>c8e8c8<a8>c8<d+8>r8.bg+edbg+dc8e8<g+8>e8}
#*27{l8<a>f+<b>g+cadb-g+fd<bg+adefd+e>e<*2a2}

A p3*1@55o4l16v13    *11*12*13*14*15*16*17*18*19
B p3*1@86o2l16v10    *20*21*22*23   *24*25*26*27
H p2*1@55o4l16v5D1  r*11*12*13*14*15*16*17*18*19
I p1*1@31o3l16v5D2   *20*21*22*23   *24*25*26*27
J p1*1@55o4l16v1D3 rr*11*12*13*14*15*16*17*18*19

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください