• No se han encontrado resultados

M3 - Pentagrama-Servidor de Comandos MIDI

N/A
N/A
Protected

Academic year: 2021

Share "M3 - Pentagrama-Servidor de Comandos MIDI"

Copied!
7
0
0

Texto completo

(1)

232

INSTITUTO MEXICANO DE ACÚSTICA

INSTITUTO TECNOLOGICO SUPERIOR DE URUAPAN

16º CONGRESO INTERNACIONAL MEXICANO DE ACÚSTICA

16th Mexican International Congress on Acoustics

URUAPAN, MICHOACAN, MÉXICO 14 - 16 OCTUBRE (October), 2009

M3 - Pentagrama-Servidor de Comandos MIDI

Maximino Peña Guerrero

(2)

233

M3 - Pentagrama-Servidor de Comandos MIDI

Maximino Peña Guerrero

Academia de Acústica, Escuela Superior de Ingeniería Mecánica y Eléctrica del Instituto Politécnico Nacional, ESIME-IPN, Av. Instituto Politécnico Nacional S/N. 07300, Zacatenco D.F. México.

ABSTRACT

In this work it’s presented the server programming that it shows a controlled staff by a program client, which requests the server (staff) that the MIDI notes it placed and “played” that the client it transmits by means of TCP/IP communications protocol with sockets structures. This technique it allows to have at least two musicians (one director and one musician), fundamental principle of the a virtual orchestra operation.

Keywords: MIDI, parallelism, concurrent process, graphic systems, staff. RESUMEN

En este trabajo se presenta la programación de un servidor que muestra un pentagrama controlado por un programa cliente, el cual solicita al servidor (pentagrama) que coloque y “toque” las notas MIDI que transmite el cliente vía protocolo de comunicaciones TCP/IP con estructuras sockets. Esta técnica permite tener por lo menos dos procesos ejecutándose al mismo tiempo (un director y un músico), base fundamental del funcionamiento de una orquesta virtual.

Palabras clave: MIDI, parallelism, concurrent process, graphic systems, staff.

1. Introducción

Uno de los problemas que que tiene el desarrollador de sistemas de música digital es la falta información detallada para programar y controlar las interfases de hardware y software que permitan la captura y la reproducción de sonido. Con mayor frecuencia se desconocen los detalles de los sistemas de comunicación entre los procesos (locales o exteriores), que una o varias máquinas digitales están ejecutando de manera concurrente o paralela. En este trabajo se presenta un ejemplo sencillo de la programación de un servidor que muestra un pentagrama cuyos símbolos gráficos (notas, claves, entre otros) son controlados por un programa cliente el cual solicita al servidor (pentagrama) que coloque y “toque”, en formato MIDI, las notas que se envían a través de un canal de comunicaciones de red estándard.

(3)

234 MIDI (Musical Instrument Digital Interface) es un protocolo de comunicaciones que surgió en los 80`s, como un acuerdo entre fabricantes, para que instrumentos de diferentes marcas pudiesen comunicarse entre sí. Combinando en una sola aplicación este sistema MIDI, el sistema de red TCP/IP y sus protocolos, OpenGL, C/C++, y las facilidades de transmitir y enviar mensajes que proporcionan los sistemas operativos MS-Windows y UNIX, construimos una herramienta que puede ayudar a analizar una composición musical, por ejemplo, la armonía, la tonalidad, la construcción de los distintos acordes, entre otras características de una obra musical.

Para lograr dicho análisis, estamos desarrollando en los laboratorios de la academia de acústica del IPN Zacatenco, una orquesta digital con 16 músicos. Hasta este momento un músico es un proceso en ejecución que interpreta a uno de los instrumentos, por ejemplo el contrabajo; otro músico es el proceso del piano; otro la primera trompeta, otro el primer saxofón alto; otro el trombón, y así hasta tener 15 procesos independientes. Esto nos permite analizar el sonido de cada instrumento por separado, o bien, tres saxofones o dos trompetas. Cabe recordar que todos los sonidos son independientes. El proceso director es el que sincroniza la melodía de tal forma que los compases de la melodía sean interpretados por todos los elementos de la orquesta en el preciso momento que se les indica.

2. Procesos cliente-servidor

Figura 1: Sistema estándar cliente-servidor

Sean dos procesos distintos que se están ejecutando de una manera simultánea e independiente dentro de una computadora digital (Figura 1). El primero de ellos, el servidor (SRV), es un programa escrito en C que grafica un pentagrama de acuerdo con una sucesión de mensajes que recibe desde el exterior a través de un canal de comunicaciones. El segundo de ellos, el cliente (CLI), es un programa escrito también en C el cual recibe un texto escrito desde un teclado para construir los mensajes los cuales a su vez son nombres de símbolos gráficos que forman el lenguaje de la música (do, re, mi, entre muchos otros). Tanto el cliente como el servidor están conectados mediante el sistema de comunicaciones TCP/IP (Transfer Control Protocol/Internet Protocol).

El dispositivo de software que permite implementar un canal de comunicaciones entre dos o más procesos son los sokets. Un soket es una estructura de datos que contiene información acerca de las características de software y hardware tanto del proceso cliente como del proceso servidor. Por

(4)

235 ejemplo el número 148.204.35.17 es una dirección que identifica la máquina donde se ejecuta uno de los procesos. Otro número, 555, puede ser el número de puerto con el cual se establecen las comunicaciones.

Figura 2: Pentagrama-servidores (músicos) con un solo cliente.

Es posible tener varios servidores conectados a un sólo cliente para construir una orquesta virtual (Figura 2) . En este caso, cada servidor es un músico digital que interpreta su propia partitura siguiendo las indicaciones del cliente, el cual hace las veces del director de la orquesta. Debido a que cada servidor tiene una dirección única que lo identifica el cliente conoce a quién dirigir los mensajes de las partituras.

Figura 3: Algunos de los símbolos diseñados con concatenación de curvas (splines) que pertenecen al servidor.

Básicamente el servidor SRV esta dividido en dos secciones: la de envío y recepción de datos musicales en forma de mensajes (sistema de comunicaciones). La otra sección del SRV es la que corresponde al proceso de graficación de las figuras musicales. Cada símbolo será dibujado utilizando el método de polinomios de tercer orden (splines) y la biblioteca de funciones de graficación OpenGL. En la Figura 3 se muestran algunas de las figuras musicales diseñadas con dicho método.

(5)

236 De la misma forma, el cliente CLI está dividido también en dos secciones: la parte de comunicaciones, la cual se encarga de enviar y recibir los mensajes al servidor o servidores. La otra sección se encarga de procesar el texto que proviene de un teclado estándard de terminal. Básicamente esta parte es un intérprete de comandos.

Un intérprete de comandos IC es un programa que recibe cadenas de caracteres y produce una acción de acuerdo con una secuencia de caracteres bien determinada. Consiste de un analizador léxico, un analizador sintáctico, y un analizador semántico (técnicas utilizadas en el diseño de compiladores e intérpretes).

Figura 4: Sistema cliente-servidor en acción.

3. Pruebas y resultados

En la Figura 4 se pueden observar el cliente (lado izquierdo) y el servidor (lado derecho) en acción. En el cliente CLI se pueden observar los siguientes comandos: clear, borrar la partitura; penta, colocar las líneas del pentagrama; csol, dibujar la clave de sol; do, nota do; mi, nota mi; sol; nota sol; do5, nota do 5; sil4, silencio de nota de 1/4; sil4 silencio de nota de 1/4; así sucesivamente hasta observar el último comando que es nuevamente sil4. El lado derecho es el resultado de la ejecución del servidor ejecutándose de manera independiente y en paralelo.

(6)

237

Conclusiones

Se han presentado algunos resultados de la programación de un sistema cliente-servidor que permite ejecutar, hasta este momento, dos procesos de una manera concurrente e independientes entre sí. El objetivo de estos experimentos es preparar las bases para construir una orquesta virtual de 16 músicos (un director y 15 intérpretes). Cada intérprete (el servidor) es un programa de computadora que recibe órdenes que envía el director (el programa cliente). Cuando el servidor interpreta y ejecuta estos mandatos, se produce el sonido de una nota musical si la orden es el comando correspondiente. Además, la nota se dibuja sobre el pentagrama gráfico que dibuja el servidor. Las comunicaciones cliente-servidor se ha implementado utilizando estructuras de datos sokets de TCP/IP. Esto permite que cada proceso en ejecución pueda correr en la misma máquina o en alguna otra máquina distante. El único requisito es que este conectada a la red de Internet. El cliente sólo procesa los datos que se escribe en una terminal, pero dichos datos pueden provenir de un archivo MIDI que contenga instrucciones de música. Por otra parte el servidor utiliza OpenGL para construir los elementos gráficos.

Referencias

[1] Conger Jim, Sequensing in C,M&T Publishing, Redwood City Calif., 1989. [2] Quin Bob, Dave Shute, Windows Sockets Programming, Addison Wesley, USA, 1996. 637 pgs.

[3] Messick Paul, Maximum MIDI: Music Applications in C++, Manning Publications Co., Canada, 1997. 453 pgs.

[4] Petzold Charles, Programming Windows: The definitive guide to the Win32 API, Fifth edition, Microsoft Press, 1999. 1479 pgs.

[5] Peña G. M., J.J Negrete Redondo, “G Key OpenGL Component”, 14 Congreso Internacional de Acústica, Noviembre 2007, León Guanajuato México.

[6] Peña G. M., “KL: A Kernel for a Music Language”, 15 Congreso Internacional de Acústica, Octubre 2008, Taxco Guerrero México.

[7] Shreiner Dave, et., OpenGL Programming Guide: The Oficial Guide to Learning OpenGL, 5th ed. OpenGL Architecture Review Board.

(7)

238 Agradecimientos

Agradezco el apoyo proporcionado por las autoridades del Instituto Politécnico Nacional, la Comisión de Operación y Fomento de Actividades Académicas, la Sección de Estudios de Posgrado e Investigación. De la misma forma agradezco a los alumnos de la academia de acústica la programación y verificación de los algoritmos básicos que permitieron la realización del presente trabajo.

El autor

mpenag@ipn.mx

Dr. Maximino Peña Guerrero; Ingeniero en Comunicaciones y Electrónica ESIME-IPN 1981); Maestro en Ciencias en Ingeniería Eléctrica (CINVESTAV 1987); Doctor en Ciencias en Ingeniería Eléctrica (CINVESTAV 2005). Profesor de tiempo completo en la ESIME del Instituto Politécnico Nacional desde 1981.

Referencias

Documento similar

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

Cuando el cliente realiza una petición, mediante una opción que indica el método a utilizar para solicitar un recurso (identificado por una URI), el servidor envía

El servidor recibe las tramas generadas en ficheros de texto enviados periódicamente por el cliente y descargados de un servidor FTP, estos archivos son los que la

Primeros ecos de la Revolución griega en España: Alberto Lista y el filohelenismo liberal conservador español 369 Dimitris Miguel Morfakidis Motos.. Palabras de clausura

Pero cuando vio a Mar sacar el fuego de bajo su ala, voló de vuelta a su tribu a contarles lo que había visto.... Justo antes de que el sol saliera, Tatkanna se despertó y comenzó

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en

En la incorporación de mejoras del simulador es necesario aumentar el número de variables, métodos y comandos que permitan al cliente enviarlas para que el servidor las pueda