Musikmakrospråk
Music Macro Language (MML) är ett musikbeskrivningsspråk som används för att sekvensera musik på dator- och videospelsystem .
Bakgrund
Tidiga automatiska musikgenereringsfunktioner användes i arkadspel, som använde många datorljud. Ett exempel på ett tidigt populärt arkadspel med musik är The Circus från Exidy Corporation 1977.
Uppsvinget för japanska tv-spel förebådades 1978 genom att Space Invaders av Taito dök upp i japanska spelcenter ( nöjesspelhallar ) .
Musiken var helt proprietär ( stängd källa) . 1978 års release av den programmerbara intervalltimern från Intel var betydande. Intel 8253 Mode 3 Square Wave-generatorn användes för musik, i Kit-datorn MZ-40K (Microcomputer Doctor ( Maikon Hakase , マイコン博士/まいこんはかせ) ) av SHARP -datorn May Corporation 19 B7AS MASTER Japan, tillverkad i May Corporation 19, Japan MB-6880(ja) BASIC Master ( BASIC Master , ベーシックマスター ) använde en 5-bitars D/A-omvandlare musikautomatiserad referenssignal. Viktigt var också utvecklingen av en metod för att generera med hjälp av BASIC- mjukvara. Maskinen monterades av Hitachi, Ltd. och tillverkades i Japan i september 1978.
MZ-40K hade en öppen arkitektur och programkällor , var därför ett slags öppen källkodsprogramvara .
Versioner
Klassisk MML
De första kommandona för klassisk MML dök upp i den interna arkitekturen för SP-1002 MONITOR IOCS och SP-5001 BASIC operativsystem på MZ-80K 8-bitars dator. Tillverkad av SHARP Corporation 1978 i Japan . Den inkorporerade Intel 8253- hårdvara och minnesmappad I/O. De ljudrelaterade BASIC- satserna var MUSIC, TEMPO och BEEP.
Syntax
Klassisk MML som används i BASIC beskrivs här. " MML-kommandon " levereras till MUSIC-satsen. Noter specificeras i ett treoktavområde. En låt är en sekvens av mono singeltoner.
"+" (eller i någon gammal kod, " ̄") indikerar övre oktav, "- " (eller i någon gammal kod, "_") indikerar den nedre oktaven. Tecknen "CDEFGAB" motsvarar en skala ("Doremi Faso Lassi"). En halvton indikeras genom att följa noten med ett '#'-tecken. Notens namn följs av en tonlängd, indikerad med en siffra från 0–9. På samma sätt indikerar R en vila och följs också av ett nummer från 0-9 som indikerar längd. Ljudlängd Internt värde × TEMPO-värden. Tonlängd Demisemiquaver är 0 (SP-1002 Internt värde är 1)- Helnoten är 9 (SP-1002 Internt värde är 32). Musik spelad på Call till $0030 SP-1002 IOCS programrutin.
Värde | Längd |
---|---|
0 | 1/32 |
1 | 1/16 |
2 | prickad 1/16 |
3 | 1/8 |
4 | prickad 1/8 |
5 | 1/4 |
6 | prickad 1/4 |
7 | 1/2 |
8 | prickad 1/2 |
9 | 1 |
Påståenden TEMPO n är 1–9, den långsammaste 1.TEMPO 4 är liknande T=120.
Exempel
Nedan är den populära japanska låten " tōryanse " skriven med MML i MZ-731 SHARP S-BASIC 1Z-007B (SP-5001 Upper kompatibel).
+ 10 TEMPO 4 20 A$ = "E5R1E3R0D3R0E3R0E1R0D1R0-G4R1" 30 B$ = "F3R0F1R0F1R0A3R0F1R0E1R0D1R0D1R0E5R0" 40 C$ 1C0ER0R0C1C 1R0-B1R0-A1R0-A1-B5R0" 50 D$ = " E1R0E1R0E1R0E1R0E1R0E1R0D1R0E1R0E1R0E1R0D1R0-A1R0-A1R0B3R1" 60 E$ = "-A1R0-B1R0C1R0D1R0E1R0F1R0E1R0F3R1A3R1B1R0A1R0F3R0E3R0E1R0E4R0" 100 MUSIK A $ + B $ + B$ 110 MUSIK C $ + C$
120 C$+D$E$
Modern MML
Modern MML dök ursprungligen upp i Microsoft BASIC och var vanligt i början av 1970- och 1980-talen på japanska persondatorer med 8-bitars och 16-bitars eran . NEC PC-6001 inkluderade Microsoft BASIC och den programmerbara ljudgeneratorn 1981. MML var särskilt populär på NEC :s persondatorer, såsom NEC PC-8801 . Med 2001 års release av mck (Music Creation Kit) programvara för att kompilera MML för att spela musik på Nintendo Entertainment System ökade medvetenheten och användningen av MML. MML är för närvarande populärt bland japanska elektroniska musiker och musiker som skapar chiptunes som ett sätt att skriva musik till Nintendo Entertainment System .
Syntax
Modern MML har sitt ursprung som ett underspråk till BASIC , då vanligtvis inkluderat i ROM på mikrodatorer. En PLAY
-sats använder ett argument för att definiera en sträng av toner som ljudchippet spelade. MML-koden har ett enkelt textformat där bokstäver och siffror används för att beskriva de noter som ska spelas. Dessutom lägger olika implementeringar av MML till systemtillägg som tillåter att parametrar för ljudsyntes kan ändras med specialiserade kommandon eller för att förenkla införandet av vanliga musikaliska figurer som arpeggios .
Även om många plattformar har anpassade tillägg och skiftlägeskrav och andra mindre syntaktiska funktioner varierar något i vissa implementeringar, är de grundläggande syntaxreglerna, kommandona och funktionerna som definierar MML och finns helt eller delvis i alla implementeringar:
-
cdefgab
— Bokstävernaa
tillg
motsvarar de musikaliska tonhöjderna och gör att motsvarande ton spelas. Skarpa toner skapas genom att lägga till ett+
eller#
, och platta toner genom att lägga till en-
. Längden på en not specificeras genom att lägga till ett tal som representerar dess längd som en bråkdel av en hel not — till exempel representerarc8 en
C åttondelsnot ochf+2
en F♯ halvnot . -
p
— En paus eller vila . Ibland ocksår
, även om den ursprungliga IBM och Microsoft BASIC användep
, liksom alla kloner (t.ex. Linux- och BSD-högtalarenheterna). Längden på vilan anges på samma sätt som längden på en ton — till exempel producerarr1 en
hel vila . -
o
— Följt av ett nummer,o
väljer den oktav som instrumentet ska spela i. -
>
,<
— Används för att stega upp eller ner en oktav . -
l
— Följt av ett nummer, anger standardlängden som används av noter eller vilor som inte uttryckligen definierar en. Till exempell8 gabg l16 gabg
en serie med fyra åttondelsnoter följt av en serie med fyra sextondelsnoter . -
v
— Följt av ett nummer, ställer in instrumentets volym . Omfånget av tillåtna värden beror på den specifika ljudhårdvara som används. Vissa implementeringar tillåter också att ett ADSR-envelopp appliceras på amplituden för varje ton. -
t
— Följt av ett nummer, ställer in tempot i slag per minut . På hårdvara med mer än en ljudkanal är det ofta möjligt att ställa in varje kanal på olika tempo.
Utöver dessa lägger de flesta implementeringar till sina egna nyckelord och symboler för systemspecifika förbättringar eller tillägg.
Exempel
Nedan är en modern MML-transkription av Dance of the Cuckoos (med blanksteg för klarhet, även om vissa MML-tolkare kommer att kräva att detta tas bort innan du spelar).
<i>t104 l4 > c16f16 a>c8 <a c16f16 a>c8</a> <a c8 b-8>c8</a></i> <b>t104 l4 > c16f16 a>c8 <a c16f16 a>c8</a> <a c8 b-8>c8</a></b><b-8 g c8 a8> <i><a c8 b-8>c8</a></i> <b><a c8 b-8>c8</a></b><a8 f c16f16 a> <i><a c8 b-8>c8</a> <a c16f16 a>c8</a> <a c8 b-8>c8</a></i> <b><a c8 b-8>c8</a> <a c16f16 a>c8</a> <a c8 b-8>c8</a></b><b-8 g > <i><a c8 b-8>c8</a></i> <b><a c8 b-8>c8</a></b>
SMX
Standard Musical eXpression (SMX) är en variant av Modern MML som tillhandahålls av Microsoft i QBASIC , BASICA och GW-BASICs PLAY- sats
. Den version som används av GW-BASIC är en del av de moderna BSD:erna, FreeBSD , NetBSD , OpenBSD och MirOS ; se talare(4) för språket.
Språk, plattformar och mjukvara
- Epic Games ZZT och Super ZZT , såväl som öppen källkodsklonen med namnet MegaZeux, använder en mycket kompakt variant av MML för PLAY-kommandot, med endast en kanal för PC-högtalaren
-
Microsofts QBASIC , BASICA och GW-BASIC har alla en
PLAY-
sats som tar ett strängargument i SMX-formatet . Namnet "Music Macro Language" kan komma från GW-BASIC, som gav en möjlighet "att spela musik genom att bädda in ett musikmakrospråk i strängdatatypen." SBasic-kompilatorn från den tyska tidningen DOS Extra, producerad av DMV Widuch, erbjuder samma PLAY-kommando, och ett fåraders BASIC-program skulle kunna kompileras till ett litet (få KiB) verktyg för att spela alla MML-filer (ofta kallade *.PLY ) ges på kommandoraden.- Eric S. Raymond skrev en UNIX System V-drivrutin som erbjuder /dev/högtalare i ett GW-BASIC- kompatibelt format. Det portades senare till 386BSD och har moderna BSD- operativsystem.
- NEC PC-8801: s BASIC-dialekt, N88-BASIC, använde MML i sitt
PLAY
-uttalande, liksom flera andra implementeringar av BASIC producerade eller sålda av NEC .- Chiptune -kompositören Yuzo Koshiro skapade en kraftigt modifierad version. Enligt Koshiro "var det mer ett språk i BASIC-stil till en början, men jag modifierade det till något mer som Assembly . Jag kallade det "Music Love". Jag använde det för alla Bare Knuckle Games."
- Olika MML-verktyg skrevs för NEC PC-9801- familjen av datorer, inklusive PMD (Professional Music Driver) av spelkompositören Masahiro Kajihara (allmänt känd som KAJA), som användes av kompositören Ryu Umemoto för spel som EVE Burst Error och Grounseed , samt av spelutvecklaren ZUN för de flesta av hans fem första Touhou Project- spel.
- Verktygen mck, pmck och ppmck för att skapa musik från Nintendo Entertainment System och ett antal andra verktyg för att skapa musik för annan hårdvara, som Bandai WonderSwan , NEC PC Engine och Sega Mega Drive .
- Xpmck-verktyget för att skapa musik för olika system, inklusive Sega Master System , Sega Game Gear , Sega Mega Drive , Nintendo Game Boy och Commodore 64 .
- Vissa mobiltelefoner använder MML som ringsignalformat . RTTTL - ringsignalspråket uppvisar många av MML:s egenskaper.
- En flyktsekvens definierades för att tillåta terminalprogram att spela musik kodad i MML. På grund av detta kallas musik i MML ibland ANSI Music.
- På MSX datorsystem använder den inbyggda MSX BASIC även MML med PLAY-kommando. Kommaseparerade strängar representerar separata röstkanaler. Musikhårdvaruexpansion som MSX-Music, MSX-Audio och MSX-MIDI utökar PLAY-kommandot så att även FM-chips och externa MIDI-enheter kan styras genom MML.
- Sharp Pocket dator musik rutin PLAYX - MyArchive .Nihongo -> ja:ポケットコンピュータの製品一覧 .
- Macrotune är en gratis MML-redigerare tillgänglig för Windows och OS X samtidigt som den erbjuder delade bibliotek för mjukvaru-/spelutvecklare.
- FlopPI-Music ( arkiverad gammal dokumentationssida ) använder ett utökat format med en filhuvud med metadata (som författare, titel, etc.), en nyrad och sedan en rad för varje stav, som stöder flera instrument, med streckrader. Den är utformad för att mata ut till upp till åtta 3½-tums diskettenheter på Raspberry Pi GPIO-portar. Den innehåller också ett fristående MML-parser- och MusicXML-exporterbibliotek och -verktyg, testat med MuseScore , vilket möjliggör enkel felsökning av speciellt massparallella MML-filer, utskrift av notblad (helst efter lite minimal efterbearbetning, men standardinställningarna är vanligtvis läsbara), etc. – Floppi-Music och MMLlib är fri programvara skriven i ren Python.
-
Petit Computer och SmileBASIC erbjuder båda
BGMPLAY-
funktioner, som antingen kan ta ett förinställt MML-spår eller ett som tillhandahålls som en sträng. - En MMO som heter Mabinogi tillåter spelare att skriva MML-kod på musikpartiturrullar i spelet som sedan kan spelas för alla i närheten att höra med hjälp av ett utrustat instrument. På grund av den sociala aspekten gjorde användare ofta sina egna MML-versioner av populära låtar och laddade upp dem till fansajter . Spelet lär också användarna syntaxen via färdighetsböcker, vilket fungerade som ett sätt att låsa upp en högre storleksgräns när koden skrevs. ArcheAge MMO ger samma funktioner.
- Ett Windows -program som heter 3MLE skapades av en Mabinogi-användare för att hjälpa till att skriva MML-rullar. Programmet fungerar på samma sätt som en IDE , vilket gör att användaren kan skriva, optimera och testa MML-kod för olika instrument.