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で確認できます。

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番打ち込んでみました。
#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
ディスカッション
コメント一覧
まだ、コメントがありません