Articulo de referencia

Lenguaje de macros musicales

Music Macro Language (MML) es un lenguaje de descripción musical utilizado para secuenciar música en sistemas de computadoras y videojuegos . Fondo Las primeras funciones de gen...

Music Macro Language (MML) es un lenguaje de descripción musical utilizado para secuenciar música en sistemas de computadoras y videojuegos .

Fondo

Las primeras funciones de generación automática de música se utilizaban en videojuegos arcade , que utilizaban muchos sonidos de ordenador. Un ejemplo de uno de los primeros juegos arcade populares con música es The Circus de Exidy Corporation en 1977.

El auge de los videojuegos japoneses fue anunciado en 1978 por la aparición en los centros de juegos japoneses ( salas de juegos recreativos ) de Space Invaders de Taito . [1]

Toda la música era propietaria ( código cerrado ). El lanzamiento en 1978 del temporizador de intervalos programable de Intel fue significativo. Para la música se utilizó el generador Intel 8253 Modo 3 Square Wave, en el equipo Kit MZ-40K (Microcomputer Doctor (マイコン博士/まいこんはかせ, Maikon Hakase ) ) de SHARP Corporation , fabricado en Japón en mayo de 1978. Otro Microordenador BASIC MASTER MB-6880(ja) BASIC Master (ベーシックマスター, BASIC Master ) utilizó una señal de referencia automatizada de música conversor D/A de 5 bits. También fue importante el desarrollo de un método para generar utilizando software BASIC . [2] La máquina fue ensamblada por Hitachi y fabricada en Japón en septiembre de 1978. El MZ-40K utilizaba una arquitectura y fuentes de programa abiertas , por lo que era una especie de software de código abierto .

Versiones

MML clásico

Los primeros comandos para MML clásico aparecieron en la arquitectura interna de los sistemas operativos SP-1002 MONITOR IOCS [3] y SP-5001 BASIC en la computadora MZ-80K de 8 bits [4] . Fabricado por SHARP Corporation en 1978 en Japón . [5] Incorporaba hardware Intel 8253 y E/S mapeadas en memoria. Las instrucciones BASIC relacionadas con el sonido eran MUSIC, TEMPO y BEEP. [6]

Sintaxis

Un escaneo de código abierto de la página 110 del Manual BASIC MZ-80 de Sharp Corporation de 1987, que describe los orígenes de la sintaxis MML.

Aquí se describe el MML clásico tal como se utiliza en BASIC . Los " comandos MML " se suministran a la instrucción MUSIC. Las notas se especifican en un rango de tres octavas. Una canción es una secuencia de tonos mono.

"+" (o en algún código antiguo, " ̄") indica la octava superior, "- " (o en algún código antiguo, "_") indica la octava inferior. Los caracteres "CDEFGAB" corresponden a una escala ("Doremi Faso Lassi"). Un semitono se indica siguiendo la nota con un carácter '#'. Los nombres de las notas van seguidos de una longitud de tono, indicada por un número del 0 al 9. De manera similar, R indica un silencio y también va seguido de un número del 0 al 9 que indica la longitud. Longitud del sonido Valor interno × Valores de TEMPO.Longitud del tono La semicorchea es 0 (el valor interno de SP-1002 es 1) - La nota entera es 9 (el valor interno de SP-1002 es 32). Música reproducida en Llamada a la rutina del programa IOCS $0030 SP-1002 . [7]

Las declaraciones TEMPO n son 1–9, el más lento 1.TEMPO 4 es similar T=120.

Ejemplo

A continuación se muestra la popular canción japonesa " tōryanse " escrita usando MML en MZ-731 SHARP S-BASIC 1Z-007B (compatible con SP-5001 Upper). [8]

10 TEMPO 4 20 A$ = "E5R1E3R0D3R0E3R0E1R0D1R0-B4R1" 30 B$ = "F3R0F1R0F1R0A3R0F1R0E1R0F1R0E1R0D1R0D1R0E4R1" 40 C$ = "C3R0C1R0C1R0E3R0C1R0-B1R0C1R0-B1R0-A1R0-A1R0-B4R1" 50 D$ = "E1R0E1R0E1R0E1R0E1R0E1R0D1R0E1R0E1R0E1R0E1R0D1R0-A1R0-A1R0-B4R1" 60 E$ = "-A1R0-B1R0C1R0D1R0E1R0F1R0E1R0F3R1A3R1B1R0A1R0F3R0E3R0E1R0D1R0E4R1" 100 MÚSICA A$ + B$ + B$ 110 MÚSICA C$ + C$ + B$ 120 MÚSICA C$ + D$ + E$  
 
 
 
 
 
  
  
  

MML moderno

El MML moderno apareció originalmente en Microsoft BASIC y era común a principios de los años 1970 y 1980 en las computadoras personales japonesas de 8 y 16 bits . La NEC PC-6001 incluía Microsoft BASIC y el generador de sonido programable en 1981. El MML fue especialmente popular en las computadoras personales de NEC , como la NEC PC-8801 . [9] Con el lanzamiento en 2001 del software mck (Music Creation Kit) para compilar MML para reproducir música en el Nintendo Entertainment System , [10] el conocimiento y el uso de MML aumentaron. [11] MML es actualmente popular entre los músicos electrónicos japoneses [9] y los músicos que crean chiptunes [12] como una forma de escribir música para el Nintendo Entertainment System .

Sintaxis

El MML moderno se originó como un sublenguaje de BASIC , que luego se incluyó generalmente en la ROM de las microcomputadoras. Una PLAYdeclaración utiliza un argumento para definir una cadena de tonos que el chip de sonido reproduce. El código MML tiene un formato de texto simple en el que se utilizan letras y números para describir las notas musicales que se reproducirán. [9] Además, varias implementaciones de MML agregan extensiones del sistema que permiten alterar los parámetros de la síntesis de audio con comandos especializados o simplificar la entrada de figuras musicales comunes como los arpegios .

Aunque muchas plataformas cuentan con extensiones personalizadas y requisitos de mayúsculas y minúsculas y otras características sintácticas menores varían levemente en algunas implementaciones, las reglas de sintaxis, comandos y características fundamentales que definen MML y están presentes total o parcialmente en todas las implementaciones son las siguientes: [9] [13]

  • cdefgab — Las letras aque gcorresponden a las notas musicales y hacen que se toque la nota correspondiente . Las notas sostenidas se producen añadiendo una +o #, y las notas bemoles añadiendo una -. La duración de una nota se especifica añadiendo un número que representa su duración como fracción de una nota entera  ; por ejemplo, c8representa una corchea de C y una blanca de F♯ .f+2
  • p — Una pausa o silencio . A veces también r, aunque el BASIC original de IBM y Microsoft usaba p, [14] como lo hacen todos los clones (por ejemplo, los dispositivos de altavoz de Linux y BSD). [15] La duración del silencio se especifica de la misma manera que la duración de una nota — por ejemplo, r1produce un silencio de ronda .
  • o —Seguido de un número, oselecciona la octava en la que tocará el instrumento.
  • >, < — Se utiliza para subir o bajar una octava .
  • l — Seguido de un número, especifica la duración predeterminada que utilizan las notas o silencios que no definen uno explícitamente. Por ejemplo, l8 g a b g l16 g a b gproduce una serie de cuatro corcheas seguidas de una serie de cuatro semicorcheas .
  • v — Seguido de un número, establece el volumen del instrumento. El rango de valores permitidos depende del hardware de sonido específico que se utilice. Algunas implementaciones también permiten aplicar una envolvente ADSR a la amplitud de cada nota.
  • t — Seguido de un número, establece el tempo en pulsaciones por minuto . En equipos con más de un canal de sonido, suele ser posible establecer un tempo diferente para cada canal.

Además de esto, la mayoría de las implementaciones agregan sus propias palabras clave y símbolos para mejoras o extensiones específicas del sistema.

Ejemplo

A continuación se muestra una transcripción MML moderna de Dance of the Cuckoos (con espacios en blanco para mayor claridad, aunque algunos intérpretes de MML requerirán que se elimine esta información antes de reproducirla).

t104
l4
>
c16f16
a>c8<a c16f16
a>c8<a c8
b-8>c8<b-8 sol c8
a8>c8<a8 y c16 y f16
a>c8<a c16f16
a>c8<a c8
b-8>c8<b-8 g >c8
<f2

A continuación se muestra la popular canción japonesa " tōryanse " escrita usando MML en PC-6001 (NEC PC-6000_series ) N60-BASIC. Se incluye para comparar con MML clásico. [16]

10 A$ = "o4e2r32e4r32d4r32e4r32e8r32d8r32o3b2r16" 20 B$ = "o4f4r32f8r32f8r32a4r32f8r32e8r32f8r32e8r32d8r32d8r32e2r16" 30 C$ = "o4c4r32c8r32c8r32e4r32c8r32o3b8r32o4c8r32o3b8r32a8r32a8r32b2r16" 40 D$ = "o4e8r32e8r32e8r32e8r32e8r32e8r32d8r32" 50 E$ = "o4e8r32e8r32e8r32d8r32o3a8r32a8r32b2r16" 60 F$ = "o3a8r32b8r32o4c8r32d8r32e8r32f8r32e8r32" 70 G$ = "o4f4r32a4r32b8r32a8r32f4r32" 80 H$ = "e4r32e8r32d8r32e2r16" 100 JUGAR "t120" 110 JUGAR A$ 120 JUGAR B$ 130 JUGAR B$ 140 JUGAR C$ 150 JUGAR C$ 160 JUGAR B$ 170 JUGAR C$ 180 JUGAR D$ 190 JUGAR E$ 200 JUGAR F$ 210 JUGAR G$ 220 JUGAR H$ 
 
 
 
 
 
 
 
  
  
  
  
  
  
  
  
  
  
  
  
  

SMX

Standard Musical eXpression (SMX) es una variante de Modern MML proporcionada por Microsoft en QBASIC , BASICA y GW-BASIC . PLAY[ 9] La versión utilizada por GW-BASIC es parte de los BSD modernos, FreeBSD , [17] NetBSD , OpenBSD y MirOS ; consulte Speaker(4) para conocer el lenguaje. [18]

Idiomas, plataformas y software

  • ZZT y Super ZZT de Epic Games , así como el clon de código abierto llamado MegaZeux, utilizan una variante muy compacta de MML para el comando PLAY, con un solo canal para el altavoz de la PC.
  • QBASIC , BASICA y GW-BASIC de Microsoft incluyen una PLAYdeclaración que toma un argumento de cadena en formato SMX. [19] [20] [21] El nombre "lenguaje de macros musicales" puede tener su origen en GW-BASIC, que proporcionaba una función "para reproducir música mediante la incorporación de un lenguaje de macros musicales en el tipo de datos de cadena". [22] El compilador SBasic de la revista alemana DOS Extra, producida por DMV Widuch, ofrece el mismo comando PLAY, y un programa BASIC de unas pocas líneas podría compilarse en una pequeña herramienta (de unos pocos KiB) para reproducir cualquier archivo MML (a menudo llamado *.PLY) dado en la línea de comandos.
    • Eric S. Raymond escribió un controlador para UNIX System V que ofrece /dev/speaker en un formato compatible con GW-BASIC . [23] Posteriormente fue portado a 386BSD y está presente en los sistemas operativos BSD modernos . [18]
  • El dialecto BASIC del NEC PC-8801PLAY , N88-BASIC, utilizó MML en su declaración, al igual que varias otras implementaciones de BASIC producidas o vendidas por NEC . [9] [24]
    • El compositor de chiptune Yuzo Koshiro creó una versión muy modificada. Según Koshiro, "al principio era un lenguaje más de estilo BASIC, pero lo modifiqué para que fuera algo más parecido a Assembly . Lo llamé 'Music Love'. Lo usé para todos los juegos de Bare Knuckle ". [25]
  • Se escribieron varias utilidades MML para la familia de computadoras NEC PC-9801 , incluido PMD (Professional Music Driver) [11] del compositor de juegos Masahiro Kajihara (más conocido como KAJA), [26] que fue utilizado por el compositor Ryu Umemoto para juegos como EVE Burst Error y Grounseed , así como por el desarrollador de juegos ZUN para la mayoría de sus primeros cinco juegos de Touhou Project .
  • Las utilidades mck, pmck y ppmck para crear música para Nintendo Entertainment System , [10] [27] y una serie de otras herramientas para crear música para otro hardware, como Bandai WonderSwan , NEC PC Engine y Sega Mega Drive . [11]
  • La utilidad xpmck para crear música para varios sistemas, incluidos Master System , Game Gear , Mega Drive , Nintendo Game Boy y Commodore 64. [ 28]
  • Algunos teléfonos celulares utilizan MML como formato de tono de llamada . [29] El lenguaje de tono de llamada RTTTL exhibe muchas de las características de MML.
  • Se definió una secuencia de escape para permitir que los programas de terminal reproduzcan música codificada en MML. Por este motivo, la música en MML a veces se denomina música ANSI. [30]
  • En el sistema informático MSX , el MSX BASIC integrado también utiliza MML con el comando PLAY. Las cadenas separadas por comas representan canales de voz independientes. Las ampliaciones de hardware musical como MSX-Music, MSX-Audio y MSX-MIDI amplían el comando PLAY de forma que también se pueden controlar chips FM y dispositivos MIDI externos a través de MML.
  • Rutina musical de computadora Sharp Pocket PLAYX - MyArchive.Nihongo -> ja:ポケットコンピュータの製品一覧.
  • Macrotune es un editor MML gratuito disponible para Windows y OS X que también ofrece bibliotecas compartidas para desarrolladores de software/juegos.
  • FlopPI-Music (página de documentación antigua archivada) utiliza un formato extendido con un encabezado de archivo con metadatos (como Autor, Título, etc.), una nueva línea y luego una línea para cada pentagrama, que admite varios instrumentos, con barras de compás. Está diseñado para generar hasta ocho archivos 3+ Unidades de disquete de 12 in (89 mm) en puertos GPIO de Raspberry Pi. También contiene un analizador MML independiente y una biblioteca y utilidad de exportación MusicXML, probada con MuseScore , que permite una fácil depuración de archivos MML especialmente masivos y paralelos, impresión de partituras (idealmente después de un posprocesamiento mínimo, pero los valores predeterminados suelen ser legibles), etc. – Floppi-Music y MMLlib son software libre escrito en Python puro.
  • Tanto Petit Computer como SmileBASIC ofrecen BGMPLAYfunciones que pueden tomar una pista MML preestablecida o una proporcionada como cadena.
  • Un MMO llamado Mabinogi permite a los jugadores escribir código MML en pergaminos de partituras musicales dentro del juego , que luego pueden reproducirse para que todos los que estén cerca puedan escucharlos usando un instrumento equipado . Debido a ese aspecto social, los usuarios a menudo hacían sus propias versiones MML de canciones populares y las subían a sitios de fans . El juego también enseña a los usuarios la sintaxis a través de libros de habilidades, que también sirven como una forma de desbloquear un límite de tamaño más alto al escribir el código. ArcheAge MMO ofrece las mismas características.
  • Un usuario de Mabinogi creó un programa de Windows llamado 3MLE para ayudar a escribir pergaminos MML. El programa funciona de manera similar a un IDE , lo que permite al usuario escribir, optimizar y probar código MML para diferentes instrumentos.

Véase también

Referencias

  1. ^ Compilado por " Tomohiro Nishikado " (西角友宏/にしかどともひろ) trabajó en Pacific Industrial Co., Ltd. Todo compilado solo.
  2. ^ Archivo PDF;Método musical de Micro Computer BASIC MASTER MB-6880 [ enlace muerto permanente ‍] - Kunihiko ([圀彦] Error: {{nihongo}}: el texto de transliteración no es escritura latina (pos 1) ( ayuda ) ) , Nagai ([長井] Error: {{nihongo}}: el texto de transliteración no es escritura latina (pos 1) ( ayuda ) ) ; Teruhiro ([輝洋] Error: {{nihongo}}: el texto de transliteración no es escritura latina (pos 1) ( ayuda ) ) , Takezawa ([竹澤] Error: {{nihongo}}: el texto de transliteración no es escritura latina (pos 1) ( ayuda ) ) ; Kazuma ([一馬] Error: {{nihongo}}: el texto de la transliteración no es escritura latina (pos 1) ( ayuda ) ) , Yoshimura ([吉村] Error: {{nihongo}}: el texto de la transliteración no es escritura latina (pos 1) ( ayuda ) ) ; KaTsutoshi ([活利] Error: {{nihongo}}: el texto de la transliteración no es escritura latina (pos 1) ( ayuda ) ) , Tajima ([田島] Error: {{nihongo}}: el texto de la transliteración no es escritura latina (pos 1) ( ayuda ) ) (26 de abril de 1979). "Hitachi Hyoron Abril de 1979 Características especiales: Un microordenador, el método de aplicación". digital.hitachihyoron . HITACHI. Archivado desde el original el 8 de mayo de 2015 . Recuperado el 26 de agosto de 2013 .{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  3. ^ "Monitor SHARP MZ.org MZ-80K por menos de 30 dólares". 20 de septiembre de 2012. Archivado desde el original el 26 de septiembre de 2015. Consultado el 19 de septiembre de 2012 .
  4. ^ La CPU es una fuente secundaria con licencia Z-80 Zilog
  5. ^ Nobuaki Ohishi (20 de septiembre de 2012). "Laboratorio Nibbles. Museo SHARP, fotografía y catálogo del MZ-80K".
  6. ^ Corporación SHARP; nagusa_kei (1978). MZ-80 BASIC SP-5030 マニュアル. Corporación SHARP. pag. 110. -Documento(validación) Versión superior SP-5030 "twitter oec_Nibbleslab". 2012-09-22.- "twitter PlayTrueName". 2012-09-22 . Consultado el 2012-09-22 ."twitter(twilog) PlayTrueName". 22 de septiembre de 2012. Consultado el 28 de diciembre de 2012 . Corporación SHARP (1978). MZ-80 BÁSICO マニュアル. Corporación SHARP. pag. 110.
  7. ^ "Monitor SHARP MZ.org MZ-80K por menos de 30 dólares". 20 de septiembre de 2012. Archivado desde el original el 26 de septiembre de 2015. Consultado el 19 de septiembre de 2012 ./ "Monitor SHARP MZ.org MZ-700 por menos de 30 dólares". 2012-09-20. Archivado desde el original el 2015-05-09 . Consultado el 2012-09-19 .
  8. ^ Motoi, Kenkichi. "El punto de vista del ojo. Ella dijo "estás jugando" Estoy llorando/Oficina Awamomo". Archivado desde el original el 18 de febrero de 2013. Consultado el 20 de septiembre de 2012 . Programado y arreglado por Motoi, Kenkichi. "Twitter @PlayTrueName Σ:D『Hace tiempo que no me despierto con la◎Programación al son de la música" . Consultado el 22 de septiembre de 2012 . Con licencia #AAAP (incluye Creative Commons CC-BY-SA y el texto de la Licencia de Documentación Libre de GNU).
  9. ^ abcdef Selfridge-Field, Eleanor (1997). Más allá del Midi: Manual de códigos musicales . Cambridge: MIT Press . ISBN 0-262-19394-9.
  10. ^ ab "VORC Internet Chiptune Encyclopedia - mck". Archivado desde el original el 2008-01-03 . Consultado el 2008-02-13 .
  11. ^ abc "VORC Internet Chiptune Encyclopedia - MML". Archivado desde el original el 23 de noviembre de 2007. Consultado el 13 de febrero de 2008 .
  12. ^ "VORC: VGM o Chiptune del año 2001". 31 de diciembre de 2001.
  13. ^ Johnson, Jeremiah . "Guía para principiantes de MCK/MML". Archivado desde el original el 14 de diciembre de 2007. Consultado el 13 de febrero de 2008 .
  14. ^ "Manual de IBM BASIC, segunda edición (mayo de 1982), versión 1.10" (PDF) . Archivado desde el original (PDF) el 15 de junio de 2015. Consultado el 26 de marzo de 2016 .
  15. ^ Documentación del dispositivo de altavoz MirBSD
  16. ^ Programado por MOTOI_Kenkichi el 11 de noviembre de 2024.Licencia #AAAP (incluye Creative Commons CC-BY-SA y el texto de la Licencia de Documentación Libre de GNU).
  17. ^ Página del manual del altavoz de FreeBSD (4)
  18. ^ Página del manual del altavoz ab(4)
  19. ^ "Manual de QBasic". Microsoft Corporation. 1991. {{cite journal}}: Requiere citar revista |journal=( ayuda )
  20. ^ "Manual del BASIC de IBM Personal Computer". IBM Corporation. 1982. {{cite journal}}: Requiere citar revista |journal=( ayuda )
  21. ^ "Manual de BASICA". Microsoft Corporation. 1982. {{cite journal}}: Requiere citar revista |journal=( ayuda )
  22. ^ "Manual de GW-BASIC". Microsoft Corporation. 1987. {{cite journal}}: Requiere citar revista |journal=( ayuda )
  23. ^ Raymond, Eric (7 de mayo de 1995). "Obras de código abierto de Eric Raymond". Página de inicio de Eric S. Raymond . Consultado el 3 de julio de 2020 .
  24. ^ Koshiro, Yūzō . «Yuzo Koshiro Interview» (Entrevista). Entrevista realizada por Kikizo Games . Consultado el 13 de febrero de 2008 .
  25. ^ Szczepaniak, John. "Computadoras japonesas retro: la última frontera de los videojuegos". Hardcore Gaming 101. Consultado el 29 de marzo de 2011 .Reimpreso de Retro Gamer , 2009
  26. ^ "ツールのお部屋" (en japonés) . Consultado el 1 de diciembre de 2019 .
  27. ^ "VORC Internet Chiptune Encyclopedia - ppmck". Archivado desde el original el 12 de octubre de 2006.
  28. ^ Swimm, Peter (21 de diciembre de 2009). «XPMCK - Kit de compilador de música multiplataforma actualizado». True Chip Till Death . Consultado el 29 de diciembre de 2011 .
  29. ^ "着信メロディは再び自分で作る時代に?──MIDIファイルやWAVファイルを着メロに変換". ITmedia, Inc. 2001-04-03 . Consultado el 13 de febrero de 2008 .
  30. ^ "ANSI Music - Los detalles técnicos" . Consultado el 16 de enero de 2009 .
Obtenido de "https://es.wikipedia.org/w/index.php?title=Lenguaje_de_macros_musicales&oldid=1260177102"