MML(Music Macro Language)とは | むかしのこと3
ぼくは昔MMLで音楽を作っていたということをたびたび書いていますが、実際にどんなものなの?っていうのがどうにも説明できない。
ということで、実際のMMLを全文ここに載せてしまいます。
以下のMMLを実際に鳴らすとどうなるかというと・・・
!音声を再生するには、audioタグをサポートしたブラウザが必要です!
そう、これは現在MusMusで素材として公開している「StarryEyed」のMMLなのです!
では、実際のMMLを見てみましょー。
ぜひ音を聴きながら眺めてみてください。
;F r8 ;" #Title 「 StarryEyed 」 for PMDPPZ #Composer T.Watanabe( NAVA ) #Arranger T.Watanabe( NAVA ) #Filename .mz ;#PPCFile NAVA.PPC #PPZFile test2.pvi #PPZ8Extend abcdef #Zenlen 192 #Detune Extend ;#LFOSpeed Extend ;============================================================================== @50 4 7 ;キラキラ あこぴ 31 00 00 00 00 38 00 01 03 00 18 11 01 07 03 00 01 02 03 00 31 00 00 00 00 32 00 06 07 00 31 9 01 07 03 00 01 02 07 00 @53 6 5 ;warm piano 31 10 00 03 07 036 00 12 -03 00 28 10 05 06 02 008 00 01 00 00 22 12 05 06 01 000 00 01 -03 00 18 12 05 06 01 000 00 01 03 00 @100 5 7 ;ファンファーレ 25 8 0 0 1 34 0 4 0 0 18 8 0 6 1 0 0 4 0 0 18 8 0 6 1 0 0 2 0 0 25 8 0 6 1 0 0 4 0 0 @80 1 7;string 31 8 0 6 2 27 0 1 0 0 31 1 0 7 15 22 0 0 0 0 31 8 0 6 2 37 0 1 0 0 2 1 6 7 15 0 0 0 0 0 @52 1 7;string 31 1 0 2 1 27 0 2 0 0 31 1 0 2 1 32 0 2 0 0 31 1 0 2 1 47 0 2 0 0 16 1 0 5 1 0 0 2 0 0 @23 2 7;デフォルトブラス 28 14 0 3 1 25 0 2 1 0 26 14 0 10 15 40 0 2 7 0 26 14 0 3 1 38 0 2 7 0 15 3 0 10 0 4 0 4 1 0 @200 5 6 31 16 0 1 2 13 0 2 0 0 15 10 1 8 1 10 0 4 0 0 15 10 1 6 1 10 0 4 1 0 15 10 1 6 1 10 0 4 1 0 @039 000 007 = Harmoni ; ar dr sr rr sl tl ks ml dt ams 018 000 000 008 000 038 000 009 003 000 018 000 000 008 000 038 000 007 007 000 015 005 000 008 001 037 000 001 003 000 015 008 000 009 002 000 000 003 007 000 @028 003 007 = Flute ; ar dr sr rr sl tl ks ml dt ams 028 005 003 006 014 042 003 012 007 000 011 007 000 006 015 051 001 008 000 000 014 002 000 006 002 048 003 004 003 000 012 016 000 007 001 000 002 004 000 000 ;= Macro ====================================================================== !b @0 px0 v10 _6 o5 ;!s @1 px0 v10 _6 o5 !s @3 px0 v10 _11 o5 !h1 \vh14\h !h2 \vh10\h !h3 \vh8\h !h0 \vh4\h ;============================================================================== ABCDEFGHIade _3 A t134 \V50 \mh \mc \ms \mb \mi \vh14 \vc16 \vs23 \vb23 \vt23 \vi23 ;[intro]----------------------------------------------------------------------- A @50 v10 D0 q2 p3 B @50 v10 D0 q2 p2 C @50 v10 D0 q2 p1 D @50 v10 D0 q2 p3 E @39 v12 D0 q3 p3 F @39 v10 D2 q3 p3 r8 G @6 v12 D0 p0 H @5 v13 D0 p0 r16 I @5 v13 D20p0 a __6 l8v11@2o5 ABCDEFGHIbde r1 a r4c4d4e4 c !b r4c4c4!sc64c8r32.!bc16 ;------------------------------------------------------------------------------ a [ f.f.f&ffc>d--16&d16< f.f.f&ffgf e.e.e4ebe a.a.a&aa>d16&e16<a ]6 b !b [c4.c4c4.]23 c8.c8.c8r2 c !s [r4[c2]7c8c8 ]5 r4[c2]5c64c16..c16c16 c8.c8.c8&c4.c8 de @4,0,-10,-50 __-5 d v13 px-2 D10 e v12 px2 D11 d o5l1 [g1a1g1e1 gag2.>d4 :c<]3 c8r16c8r16c8(^2c2 e o5l1 [e1e1e1c1 eee2. b4 :a ]3 a8r16a8r16a8(^2a2 ABCD (%1 A o4l8 [[g.g.a(^3ar:ee ]2>c<a g.g.a(^3aree :a.g.a(^3aaga ]6 [gr16]2g(^3g2 B o4l8 [[e.e.e(^3er:cc ]2 ee e.e.e(^3er<bb> :e.e.e(^3eeee ]6 [er16]2e(^3e2 C o4l8 [[c.c.c(^3cr:<aa>]2 cc d.d.d(^3dr<gg> :c.c.c(^3cccc ]6 [cr16]2c(^3c2 D o3l8 [[a.a.a(^3ar:ff ]2 aa g.g.g(^3grdd :a.a.a(^3aaaa ]6 [ar16]2a(^3a2 GHI l16 o3 [ [ef>cefec<a]4 [degb>d<bge]2 :cega>cdeg>c<adecd<ga ]6 GI a8ra8ra8(^3a2 H a8ra8ra8(^3a4.. EF @53 EF o6 g1a1g1e1 g1a1g2.>d4c2r8 EF @39 M60,3,12,2*1 )1 EF o4l8 ga>c EF o5 l8 [e2. {fg}16&g16&ge4dcr<ar>{cd}16&d16& d2&dde<ga2&a:ga>c ]2agd EF e2ragde4>ec16&c16&cc<ag d2. {fg}16&g8. e2r <f+32&g16.a>c EF e2. {fg}16&g16&ge4dcr<ar>{cd}16&d16& d2&dde<g a8r16a8r16a8 E v15D0 )%2 F v11D4 )%2 EF @28 q4 EF o3M60,2,9,2*1 rage R0 r1 R1 l16 [!h1\cr!h2r!h3r!h2r]96 K R0 R1 ;----------------------------------------------------------- ABCDEFGHIKabcde L R2 l16 [!h1\cr!h0r!h1r!h0\cr]64 K R2 a [ d.d.dr4c16&d8. g.g.gr4d4 >c.c.cr4<f16&g8. a.a.ar4g4 ]4 b !b [c4.c4.r4]16 c !s [r4[c2]7:c4 ]4c64c16..c8 EF [ e32&f8..>ee&e2. rdc6<b6>d6 <g2.a4 a32&b-32&b->c.<b- a.e.g EF f2ref>e& e4ge-&e-g4:d d4.e&e2& e2<rage ]2 > gf4.e&e2&e2 GHI @5v11l8D20 GHI v9@9 M30,2,8,2*1 G o4 [ rra2. rrg2. rrg2. rrg2. ]4 H o4 [ rf2.. rf2.. re2.. re2.. ]4 I o4 [ d4.>c&c2< d4.>d&d2< c4.b&b2 c+4.b-&b-2 ]4 A o4l8 [ c4.c&c2 <b4.b&b2 >c4.c&c2 < a4.b-&b-4a4 ]4 B o4l8 [ a4.a&a2 g4.g&g2 g4.g&g2 g4.g&g4g4 ]4 C o4l8 [ f4.f&f2 f4.f&f4f4 e4.e&e2 e4.e&e4e4 ]4 D o4l8 [ d4.d&d2 d4.d&d4d4 <c4.c&c2> c+4.c+&:c+4c+4 ]4 D @23v13q2D0 E @23v13q2D0 F @23v10q2D3 DEF (%1 EF g4f4 D e4d4 de [r1]16 ;------------------------------------------------------------------------ ABC v11 a [ [f4>c<frfrf]2 e4berere a4>e<araf&g ]3 a d4.e4>e<e4 f4.g4>g<g4 g4.g4g>f&g g4.g4d<bg b !b [c4.c4.r8c8]16 ;c !s [r4[c2]7:c4 ]4c64c16..c8 c !s [r4[c2]7c4 ]3 c [r4c2c4 ]3 !sr4c2c8c16c16 d px4 v12 e px0 v12 G D20v9@7 H D20v9@7 I D-20v7@7 r8 DEF M90,2,5,2*1 de M90,2,2,2*1 d l16o4 [ px-8 ef>px-7 ce px-6 fepx-5 c<a d px-4 ef>px-3 ce px-2 fepx-1 c<a d px1 dg px2b>d px3g<b px4gd d px5 dg px6b>d px7g<b px8gd d px8 dg px7b>d px6g<b px5gd d px4 dg px3b>d px2g<b px1gd d : px-1 ea px-2>ce px-3ac< px-4ag d px-5 ea px-6>ce px-7ac< px-8ag ]3 d px-1 ea px-2>c+e px-3ac+< px-4ag d px-5 ea px-6>c+e px-7ac+< px-8ag e l16o4 [[ ef>cefec<a]2 [dgb>dg<bgd]4 :[ea>ceac<ag]2 ]3 [ea>c+eac+<ag]2 d px-4v12l8 e px4 v12l8 ;de dfagb>dgdc<fa>cdg>bd a1g1 de l16 o4 defa>d<dfg bd>dgd<bdg afcfa>cfa gb>d<bgfdf c1d1 EFG o4l8 [ e4<a>c4d4e4g4b4>e4d d2. :ge&e2. ef DHI o4l8 [ c4<fa4a4>c4e4g4 b4b b2. :>ec&c2.cd EFG g4.g&ggad&d4cd&d4g4 e2d2c2.<gf ]2 >de&e2.<fe DHI e4.e&eee<b&b4gb&b4>d4 <b2b2a2. ed]2 b>c+&c+2.<cc EFG defg&gfg&g agab&bgb&b >c1d2&d DHI <a>cde4de4 fcfg&gdg&g a1 |DH g1 |I g2.. G r4. E @39 v14D0 F @39 v12D2 EF M60,3,12,2*1o4(%1 ga>c A o4l8p2 [ f4.f&f2 [g4.g&g2]2 e4.e&e2 ]2 B o4l8p1 [ c4.c&c2 [d4.d&d2]2 c4.c&c2 ]2 C o3l8p3 [ a4.a&a2 [b4.b&b2]2 a4.a&a2 ]2 A o4l8p2 f4.f&f2 [g4.g&g2]2 e4.e&e2 B o4l8p1 c4.c&c2 [d4.d&d2]2 c+4.c+&c+2 C o3l8p3 a4.a&a2 [b4.b&b2]2 a4.a&a2 A o4 c4.d&d2e4.f&f2 f4.f4.f4 g4.g8 (4[)1g8]4 B o3 a4.b&b2>c4.d&d2 c4.c4.c4 d4.d8 (4[)1d8]4 C o3 f4.g&g2a4.b&b2 a4.a4.a4 b4.b8 (4[)1b8]4 R3 l16 [!h1\cr!h0r!h1r!h0\cr]64 K R3 ;--------------------------------------------------------------------------- A @50 v10 D0 q2 p3 B @50 v10 D0 q2 p2 C @50 v10 D0 q2 p1 D @50 v10 D0 q2 p3 ;E @39 v12 D0 q3 p3 ;F @39 v10 D2 q3 p3 G @6 v12 D0 p0 H @5 v13 D0 p0 r16 I @5 v13 D20p0 ;-------------------------------------------------------------------------- a [ f.f.f&ffc>d--16&d16< f.f.f&ffgf e.e.e4ebe a.a.a&aa>d16&e16<a ]4 b !b [c4.c4c4.]15 c8.c8.c8r2 c !s [r4[c2]7c8c8 ]3 r4[c2]5c64c16..c16c16 c8.c8.c8&c4.c8 d v13 px-2 D10 e v13 px2 D11 d o5l1 [g1a1g1e1 gag2.>d4 :c<]2 c8r16c8r16c8(^2c2 e o5l1 [e1e1e1c1 eee2. b4 :a ]2 a8r16a8r16a8(^2a2 ABCD (%1 A o4l8 [[g.g.a(^3ar:ee ]2>c<a g.g.a(^3aree :a.g.a(^3aaga ]4 [gr16]2g(^3g2 B o4l8 [[e.e.e(^3er:cc ]2 ee e.e.e(^3er<bb> :e.e.e(^3eeee ]4 [er16]2e(^3e2 C o4l8 [[c.c.c(^3cr:<aa>]2 cc d.d.d(^3dr<gg> :c.c.c(^3cccc ]4 [cr16]2c(^3c2 D o3l8 [[a.a.a(^3ar:ff ]2 aa g.g.g(^3grdd :a.a.a(^3aaaa ]4 [ar16]2a(^3a2 GHI l16 o3 [ [ef>cefec<a]4 [degb>d<bge]2 :cega>cdeg>c<adecd<ga ]4 GI a8ra8ra8(^3a2 H a8ra8ra8(^3a4.. EF o5 l8 [e2. {fg}16&g16&ge4dcr<ar>{cd}16&d16& d2&dde<ga2&a:ga>c ]2agd EF e2ragde4>ec16&c16&cc<ag d2. {fg}16&g8. e2r <f+32&g16.a>c EF e2. {fg}16&g16&ge4dcr<ar>{cd}16&d16& d2&dde<g a8r16a8r16a8 E v15D0 )%2 F v11D4 )%2 EF @28 q4 EF o3M60,2,9,2*1 rage R4 l16 [!h1\cr!h2r!h3r!h2r]64 K R4
どうでしょうか?(変な色分けは気にしないでください^^;)
このようなテキストを書くことイコール曲作りなのです。
19行から73行あたりはFM音源の音色を設定しています。
一塊の数字の羅列が一つの音色で、その中の1行が1オペレータ、つまり、当時のNEC系PCで主流だったFM音源とは、4オペレータだったのです。
有名なYAMAHA DX7が6オペレータなので、それに比べると3分の2のオペレータ数ですね。
その下75行から85行辺りがドラムを鳴らすためのマクロ。
ドラムは今でいうモノフォニックのような感じなので、マクロで設定した音を1トラックで切り替えて鳴らしていました。
その先が本体、音符部分です。
ちなみにMMLというと最近ではXMLの一種「Music Markup Language」を指す場合もあるようですが、これらは全く別のものです。
ピアノのキーを叩くようにPCのキーを叩く
MML最盛期のぼくは、文章を打ち込むよりもはやい速度でMMLを打ち込んでいました。
頭の中にある音楽が自然とMMLに変換され、指を通してPCの画面に出てくる感じです。
この感覚だけは説明が難しく、MMLを打ち込んだ人にしか解らないかもしれません。
MMLで作曲する時の特徴
実際のMMLを見てもらえれば解りますが、今現在、どんな音色でどんな音階の音がどんなタイミングで鳴っているか、慣れていてもテキストから読み取るのは中々大変です。
ですので、そういったことは頭の中で組み立てられていたように思います。
演奏しないで作曲する、ということとも相まって、MMLで作った楽曲はロジカルになる傾向があったように思います。
今でこそ適当にチャチャっと弾いたものを「作曲だ」と言い張っているぼくですら、当時はそれなりに理論的に曲を作っていたのです。
おわりに
ぼくは今でも作曲面でMMLが優れている点はいくつもあると思っています。
ですが、さすがに楽曲のすべてをMMLで作るのはもう辛い。
なので、vstプラグインとして動くMMLエディターが無いかなぁ、あるいは自分で作れないかなぁということを以前から考えています。
そうすれば、DAW上で特定の1トラックだけMMLで記述できるんじゃないかと。
難しいのかな。
どなたか、vstプラグインを組める方に是非とも検討していただきたいものです。
[…] どれくらい古いかというと、NEC-PC8001のBEEP音にMMLという言語でプログラム的に命令を出して音を鳴らしたのが初めてのDTMというレベルです。 […]
昔、これを簡略化した感じ(?)の「サクラ」というフリーソフトを試したことがありますが、自分には無理でしたw
しっかり脳内で曲を組み立てられるタイプの方じゃないと無理なんでしょうね~、羨ましい限りです
サクラは有名ですよね。
MMLとしてもかなり高機能と聞いています。
DAWとシームレスに使うことができれば最高なのですが・・