Język makr muzycznych — Music Macro Language

Music Macro Language (MML) to język opisu muzyki używany do sekwencjonowania muzyki w komputerach i systemach gier wideo .

tło

Wczesne funkcje automatycznego generowania muzyki były wykorzystywane w grach zręcznościowych, które wykorzystywały wiele dźwięków komputerowych. Przykładem wczesnej popularnej gry zręcznościowej z muzyką jest The Circus firmy Exidy Corporation z 1977 roku.

Boom na japońskie gry wideo został zwiastowany w 1978 r., gdy pojawiły się w japońskich centrach gier ( salonach gier ) Space Invaders firmy Taito .

Muzyka była w całości zastrzeżona ( źródło zamknięte ). Wydanie z 1978 r. programowalnego licznika interwałów firmy Intel było znaczące. Do odtwarzania muzyki wykorzystano generator Intel 8253 Mode 3 Square Wave, w komputerze Kit MZ-40K (Microcomputer Doctor ( Maikon Hakase ,マイコン博士/まいこんはかせ) ) firmy SHARP Corporation , wyprodukowany w Japonii w maju 1978. Kolejny mikrokomputer BASIC MASTER MB-6880(ja) BASIC Master ( BASIC Master ,ベーシックマスター) używał zautomatyzowanego sygnału referencyjnego z 5-bitowego przetwornika cyfrowo-analogowego. Istotne było również opracowanie metody generowania przy użyciu oprogramowania BASIC . Maszyna została zmontowana przez Hitachi, Ltd. i wyprodukowana w Japonii we wrześniu 1978 roku.

MZ-40K charakteryzował się otwartą architekturą i źródłami programów , był więc rodzajem oprogramowania o otwartym kodzie źródłowym .

Wersje

Klasyczny MML

Pierwsze polecenia dla klasycznego MML pojawiły się w wewnętrznej architekturze systemów operacyjnych SP-1002 MONITOR IOCS i SP-5001 BASIC na 8-bitowym komputerze MZ-80K . Wykonane przez firmę SHARP Corporation w 1978 roku w Japonii . Jest włączone Intel 8253 sprzęt i odwzorowany w pamięci I / O. Stwierdzenia BASIC związane z dźwiękiem to MUSIC, TEMPO i BEEP.

Składnia

Otwarty skan strony 110 podręcznika Sharp Corporation do MZ-80 BASIC Manual z 1987 roku, opisujący pochodzenie składni MML.

Tutaj opisano klasyczny MML używany w języku BASIC . " Polecenia MML " są dostarczane do instrukcji MUSIC. Nuty są określone w zakresie trzech oktaw. Piosenka to sekwencja pojedynczych tonów mono.

„+” (lub w jakimś starym kodzie „ ̄”) oznacza górną oktawę, „-” (lub w jakimś starym kodzie „_”) oznacza dolną oktawę. Znaki „CDEFGAB” odpowiadają skali („Doremi Faso Lassi”). Półton jest wskazywany przez umieszczenie po nucie znaku „#”. Po nazwach nut następuje długość tonu oznaczona cyfrą od 0 do 9. Podobnie, R oznacza odpoczynek, po którym następuje również liczba od 0 do 9 wskazująca długość. Długość dźwięku Wartość wewnętrzna × wartości TEMPO. Długość tonu Demisemiquaver wynosi 0 (SP-1002 Wewnętrzna wartość to 1) – Cała nuta to 9 (SP-1002 Wewnętrzna wartość to 32). Muzyka odtwarzana w programie Call to $0030 SP-1002 IOCS .

Długość dźwięku
Wartość Długość
0 1/32
1 1/16
2 przerywana 1/16
3 1/8
4 przerywana 1/8
5 1/4
6 przerywana 1/4
7 1/2
8 przerywana 1/2
9 1

Stwierdzenia TEMPO n wynosi 1–9, najwolniejszy 1.TEMPO 4 jest podobny T=120.

Przykład

Poniżej znajduje się popularna japońska piosenka " tōryanse " napisana przy użyciu MML w MZ-731 SHARP S-BASIC 1Z-007B (kompatybilna z SP-5001 Upper).

 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$

Nowoczesne MML

Współczesny MML pierwotnie pojawił się w Microsoft BASIC i był powszechny we wczesnych latach 70. i 80. na japońskich komputerach osobistych w erze 8-bitowej i 16-bitowej . NEC PC-6001 zawiera Microsoft podstawowego i programowalne Generator dźwięku w 1981. MML było szczególnie popularne na NEC komputerów osobistych „s, takich jak NEC PC-8801 . Wraz z wydaniem w 2001 roku oprogramowania mck (Music Creation Kit) do kompilowania MML do odtwarzania muzyki na Nintendo Entertainment System , świadomość i wykorzystanie MML wzrosły. MML jest obecnie popularny wśród japońskich muzyków elektronicznych i muzyków, którzy tworzą chiptunes jako sposób na pisanie muzyki dla Nintendo Entertainment System .

Składnia

Współczesny MML powstał jako podjęzyk BASIC , a następnie ogólnie zawarty w pamięci ROM na mikrokomputerach. PLAYOświadczenie używa argumentu , aby określić ciąg dźwięków, że dźwięk chip zawodnik. Kod MML ma prosty format tekstowy, w którym litery i cyfry są używane do opisania nut, które mają być odtwarzane. Ponadto różne implementacje MML dodają rozszerzenia systemu umożliwiające zmianę parametrów syntezy dźwięku za pomocą wyspecjalizowanych poleceń lub uproszczenie wprowadzania popularnych figur muzycznych, takich jak arpeggio .

Chociaż wiele platform oferuje niestandardowe rozszerzenia i wymagania dotyczące wielkości liter oraz inne drobne funkcje składniowe w niektórych implementacjach, podstawowe reguły składni, polecenia i funkcje definiujące MML i obecne w całości lub w części we wszystkich implementacjach są następujące:

  • cdefgab - Litery ado godpowiadają boisk muzycznych i powodują odpowiedniej noty mają być odtwarzane. Nuty ostre są tworzone przez dodanie +lub #, a nuty płaskie przez dodanie -. Długość uwaga jest określony przez dodanie liczbę reprezentującą jego długości jako ułamek całej uwaga  - na przykład, c8oznacza grupę C ósemkę i f+2jest F♯ pół wiadomości .
  • p — Pauza lub odpoczynek . Czasami także r, chociaż używano oryginalnego IBM i Microsoft BASIC p, podobnie jak wszystkie klony (np. urządzenia głośnikowe Linux i BSD). Długość pauzy określa się w taki sam sposób, jak długość nuty — na przykład r1tworzy całą pauzę .
  • o — Po którym następuje liczba, owybiera oktawę, w której instrument będzie grać.
  • >, < — Służy do zwiększania lub zmniejszania o jedną oktawę .
  • l — Po którym następuje liczba, określa domyślną długość używaną przez nuty lub pauzy, które nie definiują ich wyraźnie. Na przykład l8 g a b g l16 g a b gtworzy serię czterech ósemek, po których następuje seria czterech szesnastek .
  • v — Po którym następuje liczba, ustawia głośność instrumentu. Dozwolony zakres wartości zależy od konkretnego używanego sprzętu dźwiękowego. Niektóre implementacje pozwalają również na zastosowanie obwiedni ADSR do amplitudy każdej nuty.
  • t — Po którym następuje liczba, ustawia tempo w uderzeniach na minutę . Na sprzęcie z więcej niż jednym kanałem dźwiękowym często można ustawić każdy kanał na inne tempo.

Oprócz tego większość implementacji dodaje własne słowa kluczowe i symbole dla ulepszeń lub rozszerzeń specyficznych dla systemu.

Przykład

Poniżej znajduje się współczesna transkrypcja Tańca kukułek w MML (z białymi znakami dla jasności, chociaż niektórzy interpretatorzy MML będą wymagali usunięcia go przed odtworzeniem).

t104
l4
>
c16f16
a>c8<a c16f16
a>c8<a c8
b-8>c8<b-8 g c8
a8>c8<a8 f c16f16
a>c8<a c16f16
a>c8<a c8
b-8>c8<b-8 g >c8
<f2

SMX

Standardowe ekspresji muzycznej (SMX) jest wariantem Nowoczesnej MML dostarczane przez Microsoft w QBASICu , BASICA i GW-BASIC „s PLAYoświadczenia. Wersja używana przez GW-BASIC jest częścią nowoczesnych BSD, FreeBSD , NetBSD , OpenBSD i MirOS ; patrz mówca (4) dla języka.

Języki, platformy i oprogramowanie

  • Epic Games „s ZZT i Super ZZT , jak również open source klon o nazwie MegaZeux , użyć bardzo kompaktowy wariant MML polecenia PLAY tylko z jednego kanału na głośnik
  • Microsoft „s QBASIC , BASICA i GW-BASIC Wszystkie posiadają PLAYrachunek, który wykonuje ciąg argument w formacie SMX. Nazwa „Music Macro Language” może pochodzić od GW-BASICa, który zapewniał funkcję „odtwarzania muzyki poprzez osadzenie muzycznego języka makr w typie danych string”. Kompilator SBasic z niemieckiego magazynu DOS Extra, wyprodukowany przez DMV Widuch, oferuje to samo polecenie PLAY, a kilkuwierszowy program BASIC można skompilować w małe (kilka KiB) narzędzie do odtwarzania dowolnych plików MML (często nazywanych *.PLY ) podane w wierszu poleceń.
    • Eric S. Raymond napisał sterownik UNIX System V, który oferuje /dev/speaker w formacie zgodnym z GW-BASIC . Został następnie przeniesiony do 386BSD i jest obecny w nowoczesnych systemach operacyjnych BSD .
  • NEC PC-8801 „s BASIC dialekt, N88-BASIC, używane MML w swoim PLAYoświadczeniu, podobnie jak kilka innych implementacje BASIC produkowane lub sprzedawane przez firmę NEC .
    • Kompozytor Chiptune Yuzo Koshiro stworzył mocno zmodyfikowaną wersję. Według Koshiro, „na początku był to bardziej język w stylu BASIC, ale zmodyfikowałem go, aby był bardziej podobny do Assembly . Nazwałem go 'Music Love'. Używałem go we wszystkich grach Bare Knuckle ”.
  • Różne narzędzia MML zostały napisane dla rodziny komputerów NEC PC-9801 , w tym PMD (Professional Music Driver) przez kompozytora gier Masahiro Kajihara (najczęściej znanego jako KAJA), który był używany przez kompozytora Ryu Umemoto w grach takich jak EVE Burst Error i Grounseed , a także przez twórcę gier ZUNa dla większości jego pierwszych pięciu gier z Touhou Project .
  • Narzędzia mck, pmck i ppmck do tworzenia muzyki Nintendo Entertainment System oraz szereg innych narzędzi do tworzenia muzyki na inny sprzęt, takich jak Bandai WonderSwan , NEC PC Engine i Sega Mega Drive .
  • Narzędzie xpmck do tworzenia muzyki na różne systemy, w tym Sega Master System , Sega Game Gear , Sega Mega Drive , Nintendo Game Boy i Commodore 64 .
  • Niektóre telefony komórkowe wykorzystują MML jako format dzwonka . Język dzwonków RTTTL wykazuje wiele cech charakterystycznych MML.
  • Sekwencja ucieczki zostało zdefiniowane, aby umożliwić programy terminalowe odtwarzania muzyki zakodowanej w MML. Z tego powodu muzyka w MML jest czasami nazywana ANSI Music.
  • W systemie komputerowym MSX wbudowany MSX BASIC również używa MML z poleceniem PLAY. Ciągi oddzielone przecinkami reprezentują oddzielne kanały głosowe. Rozszerzenia sprzętu muzycznego, takie jak MSX-Music, MSX-Audio i MSX-MIDI, rozszerzają polecenie PLAY, dzięki czemu również chipy FM i zewnętrzne urządzenia MIDI mogą być kontrolowane przez MML.
  • Program muzyczny Sharp Pocket computer PLAYX - MyArchive .Nihongo -> ja:ポケットコンピュータの製品一覧.
  • Macrotune to darmowy edytor MML dostępny dla systemów Windows i OS X, oferujący jednocześnie biblioteki współdzielone dla twórców oprogramowania / gier.
  • FlopPI-Music ( zarchiwizowana stara strona dokumentacji ) używa rozszerzonego formatu z nagłówkiem pliku z metadanymi (takimi jak autor, tytuł itp.), nową linią, a następnie jedną linią dla każdej pięciolinii, obsługując wiele instrumentów, z liniami taktowymi. Został zaprojektowany do obsługi do ośmiu stacji dyskietek 3,5 cala na portach GPIO Raspberry Pi. Zawiera również samodzielny parser MML oraz bibliotekę i narzędzie do eksportowania MusicXML , przetestowane z MuseScore , umożliwiające łatwe debugowanie szczególnie masowo równoległych plików MML, drukowanie arkusza wyników (najlepiej po pewnym minimalnym przetworzeniu, ale wartości domyślne są zwykle czytelne) itp. – Floppi-Music i MMLlib to Wolne Oprogramowanie napisane w czystym Pythonie.
  • Zarówno Petit Computer, jak i SmileBASIC oferują BGMPLAYfunkcje, które mogą pobierać zaprogramowaną ścieżkę MML lub dostarczoną jako ciąg.
  • Gra MMO o nazwie Mabinogi pozwala graczom na wpisywanie kodu MML na zwojach nutowych w grze, które można następnie odtwarzać, aby wszyscy w pobliżu mogli usłyszeć za pomocą wyposażonego instrumentu. W związku z tym aspektem społecznościowym użytkownicy często tworzyli własne wersje popularnych piosenek w MML i przesyłali je na strony fanów . Gra uczy również użytkowników składni za pomocą książek umiejętności, co podwoiło się jako sposób na odblokowanie wyższego limitu rozmiaru podczas pisania kodu.
  • Program Windows o nazwie 3MLE został stworzony przez użytkownika Mabinogi, aby pomóc w pisaniu zwojów MML. Program działa podobnie do IDE , umożliwiając użytkownikowi pisanie, optymalizację i testowanie kodu MML dla różnych instrumentów.

Zobacz też

Bibliografia