Music Macro Language

Not to be confused with the XML-based Music Markup Language, though Music Macro Language is sometimes erroneously called by this name.

Music Macro Language (MML) is a music description language used in sequencing music on computer and video game systems.

MML is sometimes known as Music Markup Language, by conflation with the XML musical notation markup language of that name. For instance, what the video game Mabinogi refers to as "Music Markup Language" is actually a typical implementation of Music Macro Language.

History

The history of MML is related to the history of computing hardware.

Background

Early automatic music generation functions were used in arcade games, which used many computer sounds. An example of an early popular Arcade game with music is The Circus from Exidy Corporation in 1977.

The boom in Japanese video games was heralded in 1978 by the appearance in Japanese game centers (Amusement arcades) of Space Invaders by TAITO Corpolation.[1] The Yellow Magic Orchestra used more sampling music motif in their games. Their sound has been reproduced on Moog synthesizers. Others were mostly played by acoustic instruments. The Circus and Space Invaders's music is both hard circuit music and sounds.

Many similar Space Invaders-style games were created. Melodic spinoffs are relevant to the development of MML, especially Melody part III, Space War PART III or the Music Invaders made by Sanritsu Electoric Corpolation in 1978.

The music was all proprietary (closed source). The 1978 release of the Programmable interval timer by Intel was significant. The Intel 8253 Mode 3 Square Wave generator was used for music, in the Kit computer MZ-40K(My computer Doctor (Maikon Hakase マイコン博士/まいこんはかせ)) by SHARP Corporation, made in Japan at May 1978. Another Micro computer BASIC MASTER MB-6880(ja)BASIC Master (BASIC Master ベーシックマスター) used a 5Bit D/A converter music automated reference signal. Also important was the development of a method to generate using BASIC software.[2] The machine was assembled by Hitachi, Ltd. and made in Japan in September 1978.

The MZ-40K featured an open architecture and program sources.[3]

Versions

Classical MML

The first commands for classical MML appeared in the internal architecture of the SP-1002 MONITOR IOCS[4] and SP-5001 BASIC Operating Systems on the MZ-80K 8-bit[5] computer. Made by SHARP Corporation at 1978 in Japan.[6] It incorporated Intel 8253 hardware and memory mapped I/O. The sound-related BASIC Statements were MUSIC, TEMPO, and BEEP. [7]

Syntax

An open-sourced scan of page 110 of Sharp Corporation's 1987 MZ-80 BASIC Manual, describing the origins of the MML syntax.

Classical MML as used in BASIC is described here. "MML Commands" are supplied to the MUSIC statement. Notes are specified in a three-octave range. A song is a sequence of mono single tones.

"+" (or in some old code, " ̄") indicates upper octave, "- " (or in some old code, "_") indicates the lower octave. The characters "CDEFGAB" correspond to a scale ("Doremi Faso Lassi"). A semitone is indicated by following the note with a '#' character. The note names are followed by a tone length, indicated by a number from 0-9. Similarly, R indicates a rest, and is also followed by a number from 0-9 indicating length. Sound length Internal value × TEMPO values.Tone length Demisemiquaver is 0(SP-1002 Internal value is 1)- Whole note is 9(SP-1002 Internal value is 32). Music played on Call to $0030 SP-1002 IOCS program routine.[8]

The sound length
Value Length
0 1/32
1 1/16
2 dotted 1/16
3 1/8
4 dotted 1/8
5 1/4
6 dotted 1/4
7 1/2
8 dotted 1/2
9 1

Statements TEMPO n is 1-9, the slowest 1.TEMPO 4 is similar T=120.

Example

Below is the popular Japanese song "tōryanse" written using MML in MZ-731 SHARP S-BASIC 1Z-007B (SP-5001 Upper compatible).[9]

 1 PRINT "TOORYANSE"
 2 PRINT "ARRANGED BY"
 3 PRINT " (C)2012 MOTOI KENKICHI"
 4 PRINT " THANKS ALL WIKIPEDIANS."
 10 TEMPO 4
 20 A$="E5R1E3R0D3R0E3R0E1R0D1R0-G4R1"
 30 B$="F3R0F1R0F1R0A3R0F1R0E1R0D1R0D1R0E5R0"
 40 C$="C3R0C1R0C1R0E3R0C1R0-B1R0C1R0-B1R0-A1R0-A1-B5R0"
 50 D$="E1R0E1R0E1R0E1R0E1R0E1R0D1R0E1R0E1R0E1R0D1R0-A1R0-A1R0B3R1"
 60 E$="-A1R0-B1R0C1R0D1R0E1R0F1R0E1R0F3R1A3R1B1R0A1R0F3R0E3R0E1R0E4R0"
 100 MUSIC A$+B$+B$
 110 MUSIC C$+C$+B$
 120 MUSIC C$+D$+E$

Modern MML

Modern MML originally appeared in Microsoft BASIC and was common in the early 1970s and 1980s on 8-bit and 16-bit era Japanese personal computers. The NEC PC-6001 included Microsoft BASIC and the Programmable Sound Generator in 1981. The MML was especially popular on NEC's personal computers, such as the NEC PC-8801.[10] With the 2001 release of the mck (Music Creation Kit) software for compiling MML to play music on the Nintendo Entertainment System,[11] awareness and use of MML increased.[12] MML is presently popular among Japanese electronic musicians[10] and musicians who create chiptunes[13] as a way to write music for the Nintendo Entertainment System.

Syntax

Modern MML originated as a sub-language of BASIC, then generally included in ROM on micro-computers. A PLAY statement uses an argument to define a string of tones that the sound-chip played. MML code has a simple text format whereby letters and numbers are used to describe the musical notes to be played.[10] In addition, various implementations of MML add system extensions allowing parameters of audio synthesis to be altered with specialized commands or to simplify the entry of common musical figures such as arpeggios.

Though many platforms feature custom extensions and letter case requirements and other minor syntactical features vary slightly in some implementations, the fundamental syntax rules, commands and features that define MML and are present in whole or in part in all implementations are as follows:[10][14]

In addition to these, most implementations add their own keywords and symbols for system-specific enhancements or extensions.

Example

This example can be played using mml2mid, a Web-based MML to midi / MP3 conversion system.[15]

#timebase 480
#title "The M.GAKKOU KOUKA"
#copyright "Music Composed by Kenkichi Motoi 2009 Wikimedia version 2012"
A t160
A o3l4 V12
A @1 ed8ce8 gg8er8 aa8>c<a8 g2r
A aa8ga8 >cc8d<r8 ee8de8 c2r
A dd8dd8 dd8dr8 ed8ef8 g2r
A aa8ga8 >cc8<ar8 >dc8de8 d2<r
A >ee8dc8< ab8>cc8< gg8ea8 g2r
A >cc8<ge8 cd8ea8 gg8de8 c2r

Example 2

This was originally compiled on a Sharp PC-E500S Pocket computer using Ryu. T. Kobayashi's PLAY3.[16] After the NEC PC-9801 freeware games BGM Arranged,Appear the MML2MID MIDI version to Vecotor.co.jp(ja).[17]

#title "bottakuri-shouten(ORIGINAL)PLAY3->PMD->MIDI"
#copyright "Music Composed by Kenkichi Motoi 1997 Wikimedia version 2012"
#timebase 48

$g k100
$h k100

T C12 BT4,4 t150
T EX x41,x10,x42,x12,{x40,0,x7f,0},xf7 r48 ; GS-RESET
T EX x41,x10,x42,x12,{x40,1,x39,6},xf7     ; GS-Chorus #6

G C1
H C2
I C3

GHI  r8 H0,0@45  r8   o3 l8   ; Melody 1
G p64 v110
H p80 v60
I p32 v60

H <
I >

G [rrrr rrrr rrrr rrrr
HI [cgcg cgcg cgcg cgcg

G rrrr rrrr rrrr rrrr
HI cgcg cgcg cgcg >c<ceg

G >e<rrr rr>ef< rrrr >d<rrr
HI >e<gcg cg>ef< dada >d<g+c+g+

G >e<rrr rrrr rrrr rrrr >e<rrr
HI >e<gcg cgcg cgcg >c<gcg >e<gcg

G rr>ef< rrrr >d<rrr >e<rrr
HI cg>ef< dada >d<g+c+g+ >e<gcg

G rrrr rrrr rrrr brrr
HI cgcg cgcg >c<gcg b<b>d<b>

G rrbg+ rarb r>crd erfr
HI d<b>bg+ <d>a<d+>b <f+>>c<<g>>d e<e>f<f>
G erd+
HI e<e>d+

GHI k32,2[d32]24
G $g
HI $h

G <ab>c c+<rrr
HI <ab>c c+<c+c+c+

G rb>cc+ d<rrr r>def g
HI c+b>cc+ d<ddd d>def g
GHI H0,0 @44
H <
I >
GHI <<gb>c
GHI gfed fedc edc<b
GHI l16abababab abababab gagagaga gagagaga
GHI g2
GHI r8
H >
I <
GHI @45
GHI l8>gab]2
GHI k110,-5,0

G rrrr rrrr rrrr rrrr
HI cgcg cgcg cgcg cgcg

G rrrr rrrr rrrr rrrr
HI cgcg cgcg cgcg >c<ceg

Standard Musical Expression (SMX)

SMX is similar to modern MML. In SMX, note length is specified via an L command (e.g. L4) rather than by writing a number after the note.[18] This code was used by QBasic's PLAY command.[19]

Languages, platforms and software

See also

References

  1. Compiled by "Tomohiro Nishikado" (西角友宏/にしかどともひろ) worked in the Pacific Industrial Co.,Ltd.All compiled alone.
  2. PDF file;Micro Computer BASIC MASTER MB-6880 Music method - Kunihiko (圀彦), Nagai (長井); Teruhiro (輝洋), Takezawa (竹澤); Kazuma (一馬), Yoshimura (吉村); KaTsutoshi (活利), Tajima (田島) (1979-04-26). "Hitachi Hyoron April 1979 Special Features:A micro-computer, the application method". digital.hitachihyoron. HITACHI. Retrieved 26 August 2013.
  3. Remains Apple Open technology by Steve Wozniak in 1977 like Apple Red book Apple Computers.
  4. "SHARP MZ.org MZ-80K monitor sub $0030". 2012-09-20.
  5. CPU is Z-80 Zilog Licenced Secondary source
  6. Nobuaki Ohishi (ŌishiNobuaki 大石信彰/おおいしのぶあき) (2012-09-20). "Nibbles lab.SHARP Musium,MZ-80K Photo and Catalog.".
  7. SHARP Corporation; nagusa_kei (1978). MZ-80 BASIC SP-5030 マニュアル. SHARP Corporation. p. 110.-Document(validation) Upper Version SP-5030 "twitter oec_Nibbleslab". 2012-09-22.-"twitter PlayTrueName". 2012-09-22. Retrieved 2012-09-22."twitter(twilog) PlayTrueName". 2012-09-22. Retrieved 2012-12-28. SHARP Corporation; http://twitter.com/sharp_garapagos (1978). MZ-80 BASIC マニュアル. SHARP Corporation. p. 110.
  8. "SHARP MZ.org MZ-80K monitor sub $0030". 2012-09-20./"SHARP MZ.org MZ-700 monitor sub $0030". 2012-09-20.
  9. Motoi, Kenkichi. "Viewpoint of the eye. She said "you playing" I'm crying/Awamomo Office". Retrieved 2012-09-20. Programmed and arranged by Motoi, Kenkichi. "Twitter @PlayTrueName Σ:D『So long time wake up to the◎Programming to sound of music". Retrieved 2012-09-22. Licensed #AAAP(Including Creative Commons CC-BY-SA and Text of GNU Free Documentation License.).
  10. 10.0 10.1 10.2 10.3 10.4 Selfridge-Field, Eleanor (1997). Beyond Midi: The Handbook of Musical Codes. Cambridge: MIT Press. ISBN 0-262-19394-9.
  11. "VORC Internet Chiptune Encyclopedia - mck". Archived from the original on 2008-01-03. Retrieved 2008-02-13.
  12. 12.0 12.1 "VORC Internet Chiptune Encyclopedia - MML". Archived from the original on 2007-11-23. Retrieved 2008-02-13.
  13. "VORC: VGM or Chiptune of The Year 2001". 2001-12-31.
  14. Johnson, Jeremiah. "MCK/MML Beginners Guide". Retrieved 2008-02-13.
  15. Noike Kenji (野池賢二). "MML to MP3 with ぼーか郎(fileconv.cgi ver. 2.53.2)". Retrieved 2012-09-22. Composed and programmed by Kenkichi Motoi. "作曲してみる". Retrieved 2012-09-22. Licensed #AAAP(Including Creative Commons CC-BY-SA and Text of GNU Free Documentation License.)
  16. Kenkichi Motoi (基建吉). "E500 PLAY 3 music subroutine Programed By T.Kobayashi (Ryu) PLAY 3". Retrieved 2012-10-18..PC-E500 PLAY 3 music subroutine (C) 1993 Programed By T.Kobayashi (Ryu)/93.11 separate journal pocket computer I/O Monthly engineering company (Ltd.)(ja) Graphic & Sound No. 71 of the quoted source.
  17. Kenkichi Motoi (基建吉). "Space panicco MIDI version of the BGM". Retrieved 2012-10-19.Licensed #AAAP(Including Creative Commons CC-BY-SA and [[:ja:Wikipedia:Text of GNU Free Documentation License. |Text of GNU Free Documentation License.]])
  18. Beyond MIDI: The Handbook of Musical Codes. ISBN 978-0-262-19394-8.
  19. see http://en.wikibooks.org/wiki/QBasic/Appendix#PLAY
  20. "QBasic manual". Microsoft Corporation. 1991.
  21. "IBM Personal Computer BASIC manual". IBM Corporation. 1982.
  22. "BASICA manual". Microsoft Corporation. 1982.
  23. "GW-BASIC manual". Microsoft Corporation. 1987.
  24. Koshiro, Yūzō. Interview with Kikizo Games http://games.kikizo.com/features/yuzo_koshiro_iv_oct05_p2.asp. Retrieved 2008-02-13. Missing or empty |title= (help)
  25. Szczepaniak, John. "Retro Japanese Computers: Gaming's Final Frontier". Hardcore Gaming 101. Retrieved 2011-03-29. Reprinted from Retro Gamer (67), 2009
  26. Swimm, Peter (December 21, 2009). "XPMCK - Cross Platform Music Compiler Kit updated". True Chip Till Death. Retrieved December 29, 2011.
  27. "着信メロディは再び自分で作る時代に?──MIDIファイルやWAVファイルを着メロに変換". ITmedia, Inc. 2001-04-03. Retrieved 2008-02-13.
  28. "ANSI Music - The Technical Details". Retrieved 2009-01-16.
  29. speaker(4) manual page
  30. "MML: Mabinogi World Wikia". Retrieved 2012-10-25.
  31. "Composing: Mabinogi World Wikia". Retrieved 2012-10-25.

External links