Music Macro Language

From Video Game Music Preservation Foundation Wiki
Revision as of 11:33, 1 November 2017 by TheAlmightyGuru (talk | contribs) (Microsoft BASIC)
Jump to: navigation, search
Music Macro Language
MML.png
Developer: N/A
Header: N/A
Content: N/A
Instruments: N/A
Target Output
Output - Digital Audio - No.png Output - MIDI - No.png Output - FM Synthesis - No.png Output - PSG - No.png
Released: N/A
First Game: N/A
Extensions
  • *.mml
  • *.bas
  • *.pas

Music Macro Language or Music Markup Language is an abstract digital notation format for music. Because digital music can be made on numerous audio chips, each with unique capabilities, there is no standard format to MML. The format has always been dictated by the interpreting program and attempts to create a standard format have met with only limited success. MML can be seen in many different early computer programming languages and variations of it have been created by various game developers. Versions of it have been made for pretty much every early audio chip found in arcade games, home computers, and gaming consoles.

Specific companies like Beam Software and Color Dreams used custom forms for their Nintendo games, and even some modern day trackers use it to send audio data to the various audio chips.

Examples

Microsoft BASIC

This will play Ode to Joy on the PC Speaker.

10 PLAY "O2 T120 E8 E8 F8 G8 G8 F8 E8 D8 C8 C8 E8 E8 E8 D12 D4"
20 PLAY "E8 E8 F8 C8 G8 F8 E8 D8 C8 C8 D8 E8 D8 C12 C4"
30 PLAY "D8 D8 E8 C8 D8 E12 F12 E8 C8 D8 E12 F12 E8 D8 C8 D8 P8"
40 PLAY "E8 E8 F8 G8 G8 F8 E8 D8 C8 C8 D8 E8 D8 C12 C4"

Sharp S-BASIC

This plays the Japanese song "Toryanse" on the PC Speaker in Sharp MZ-731.

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"
70 MUSIC A$+B$+B$
80 MUSIC C$+C$+B$
90 MUSIC C$+D$+E$

Tandy 1000 BASICA

This program will play the first couple bars of J.S. Bach's Fantasia and Fugue In C Minor on the Tandy 3 Voice using GW-BASIC Advanced format.

10 DIM A$(3)
20 DIM B$(3)
30 DIM C$(3)
40 SOUND ON
50 PLAY "MLv15T80", "MLv14T80", "MNv15T80"
60 A$(0)="o2l6p6p6go3el12p12dl6ecl3fl12fl24edl12eagal6dl3gl12gl24fel12fco2bo3f"
70 B$(0)="o2l6p6p6p6p6p6cal12p12gl6ago3l3cl12cl24o2bal12bo3edel6o2al3o3d"
80 C$(0)="o1l1ccc"
90 A$(1)="o3l12fel3al12al24gfl12edegl6bl12agl6fl2o4c"
100 B$(1)="o3l12dl6co2l12bo3cdo2l3bl6bo3l12dcl3cl12cdefge"
110 C$(1)="o1l1cc"
120 A$(2)="o4l6cl12p12co3bo4co3l6bl12o4co3bagfl3gl6fp6e"
130 B$(2)="o3l12fcl3fl12fl24edl3el12el24dcbcbcl6dl12dl24cbl6cl12db"
140 C$(2)="o1l1cl2cl3cl6o2c"
150 FOR N = 0 TO 2
160 PLAY A$(N), B$(N), C$(N)
170 NEXT
180 END

NES

Here is an example of a song written for the NES in a custom MML.

#TITLE Song Title
#COMPOSER Composer
#PROGRAMER Copyright
@v0 = { 10 9 8 7 6 5 4 3 2 }
@v1 = { 15 15 14 14 13 13 12 12 11 11 10 10 9 9 8 8 7 7 6 6 }
@v2 = { 15 12 10 8 6 3 2 1 0 }
@v3 = { 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 }
@DPCM0 = { "samples\kick.dmc",15 }
@DPCM2 = { "samples\snare.dmc",15 }
ABCDE t150
A l8 o4 @01 @v0
A [c d e f @v1 g4 @v0 a16 b16 >c c d e f @v1 g4 @v0 a16 b16 >c<<]2
C l4 o3 q6
C [c e g8 g8 a16 b16 >c8 c e g8 g8 a16 b16 >c8<<]4
D o0
D [@v2 b @v3 e @v2 b @v3 e @v2 b @v3 e @v2 b @v3 e8 @v2 b8]4

Music-V Language

Music-V is a special type of MML used on Atari audio chips. It is similar to that of composing on a staff. You write the note, the octave, and the length. For example, C3Q (Note: C, Octave 3, Quarter Note).

Hexadecimal

Many custom MMLs would have users writing their music into long strings of hexadecimal numbers which the audio driver would convert into musical notes and effects. Each driver had a particular format that the numbers were expected to be in.


MML KITs and Languages

MCK

Macro Music Kit - a NES MML implemetation and a compiler, By Izumi

Mck is a NES music driver which allows you to create NSF music files on DOS/Windows. Not only NES's internal sound but also extra sound chips on Famicom Disk System, N106, VRC6 are supported. It's provided along with MML compiler (mckc), and you can make ROM/disk images as well.

The original version was developed by Izumi from Japan on December 2001. Nowadays some advanced variants such as pmck and ppmck are also available.

http://www.geocities.co.jp/Playtown-Denei/9628/

PMCK

Pseudo MCK - a MKC extention by

ppmck

Pseudo PMCK - A set of music editor/driver to make NES music (NSF files) on DOS/Windows. It's the most advanced mck/pmck variant with many enhancements including simultaneous external sound chip support which allows you to use FDS/VRC7/VRC6/N106/MMC5/FME7 at the same time. Developed by h7

it also have a serie of patch by BouKiCHi; named 'ex' the last of this serie is ppmck release 9a ex1

another patch serie has started by AoiMoe, the last of this serie was ppmck release 9a ex11.1am1


https://github.com/AoiMoe/ppmck

NRTDRV

MML Compiler/driver for the Sharp X1. http://nrtdrv.sakura.ne.jp/

NSD.Lib

for nes, all expansions, ad-hoc OPLL support http://shaw.la.coocan.jp/nsdl/

OFGS

for nes some expansions + PCM synth channels

AddMusicK

for SNES

Professional Music Driver (PMD)

Professional Music Driver (PMD) for PC-x801 YM2608 and YM2203

FMP

for PC-x801 YM2608 and YM2203

MuSICA

a MSX MML

MDRV2

husic

PC-Engine / TG16 (HuC6280) Sound Tool by BouKiCHi https://github.com/BouKiCHi/husic_git

XPMCK

XPMCK is a music (expressed in MML) compiler kit targeted towards various video game systems. It currently supports the following systems:

   Amstrad CPC
   Atari 8-bit (400/800/XL/XE)
   Capcom Play System (VGM output only)
   ColecoVision
   Commodore 64
   MSX (KSS output only)
   Nintendo Gameboy / Gameboy Color
   PC-Engine / TurboGrafx
   SEGA Master System
   SEGA Game Gear
   SEGA Genesis 

http://jiggawatt.org/muzak/xpmck/

VGMCK

most VGM formats with unofficial extension for NES expansion chips https://vgmrips.net/forum/viewtopic.php?f=3&t=835


kmckc

mckc for ksr - A DOS utility working as a part of KSR system. It's a mckc variant optimized to MSX music, and allows you to convert your MML (text-based sequence data) to actual numeric data in KSS format. Developed by BouKiChi.

KSR

KSR being developed by BouKiChi from Japan is a sort of MSX version of mck, the text-based NES music editor running on DOS/Windows. Depending on the same MML style, it generates executable or KSS music file for for Z80 + AY-3-8910 systems. KSR is provided with MML converter kmckc.

mckc

A DOS utility working as a part of mck system. It allows you to convert your MML (text-based sequence data) to actual numerical music data in NSF format. Developed by Manbow-J.

MCKWatch

A Windows utility which efficiently helps music making on DOS-based chiptune editors such as mck (including pmck/ppmck), HuSIC and KSR. It detects updated MML file, It converts your MML file to the actual music data whenever the MML is updated, then automatically plays it. Developed by Rophon from Japan.


mmdp

A DOS/Windows software which allows you to make Genesis/Mega Drive music. It converts sound informations described on MML text to its own MMD music format. MMD files are playable on the real platform and emulators when combined with mmdp.bin. The package includes Windows player mmdplayer.exe so that you can check your song via sound emulation. Developed by Uchuusen.

SCMD

MML-based music edit system for MSX, being developed by Mega from Japan. SCMD supports internal PSG, MSX-MUSIC, SCC, and even allows you to use two SCC cartridges simultaneously. Although turboR is recommended for use, it's the first Japanese music editor featuring sample playback via SCC's five wave channels, and rich effect command sets are also attractive.

WTD

Wonder Swan Total Sound Driver - A set of DOS/Windows softwares to make sound data for WonderSwan. Or the file format of the music data by the driver. Based on MML.

WTD music files are played on the real console via WonderWitch, and also on emulators like OSWAN if you convert a WTD file to ROM file by "WSMAKE.COM" offered with the driver.

The only publicly available sound editor for WonderSwan except WTD is WonderWitch, and WTD is much more powerful. You can also use MIDI device concurrently with the internal wave channels. Developed by S.W.



http://zzo38computer.org/vgm/

Players

Since this isn't a specific format, there are no specific players.

Games

(Category)

Links