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プラグインを組める方に是非とも検討していただきたいものです。

| カテゴリ:むかしのこと

“MML(Music Macro Language)とは | むかしのこと3” への3件のフィードバック

  1. […] どれくらい古いかというと、NEC-PC8001のBEEP音にMMLという言語でプログラム的に命令を出して音を鳴らしたのが初めてのDTMというレベルです。 […]

  2. ハマー より:

    昔、これを簡略化した感じ(?)の「サクラ」というフリーソフトを試したことがありますが、自分には無理でしたw
    しっかり脳内で曲を組み立てられるタイプの方じゃないと無理なんでしょうね~、羨ましい限りです

    • watson より:

      サクラは有名ですよね。

      MMLとしてもかなり高機能と聞いています。

      DAWとシームレスに使うことができれば最高なのですが・・

コメントを残す

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

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