ecni- l´´´exico deral. · 2017-08-07 · kl : 5 cunciona´ • r dise˜m´usica. •...

39
Conecting MIDI to KL ponkl.tex pg: 1 CONNECTING MIDI TO KL Maximino Pe˜ na Guerrero 1 Escuela Superior de Ingenier´ ıa Mec´ anica y El´ ectrica del Instituto Polit´ ecni- co Nacional, UnidadProfesional Adolfo L´opez Mat´ eos, Zacatenco, M´ exico Distrito Federal. 1 [ponkl.tex : portada.tex][MPG220914]

Upload: others

Post on 23-Apr-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 1

CONNECTING MIDI TO KL

Maximino Pena Guerrero1

Escuela Superior de Ingenierıa Mecanica y Electrica del Instituto Politecni-co Nacional, Unidad Profesional Adolfo Lopez Mateos, Zacatenco, MexicoDistrito Federal.

1[ponkl.tex : portada.tex][MPG220914]

Page 2: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 2

OBJETIVO

Describir como funciona el lenguaje KL.

Presentar una descripcion del sistema MIDI

Describir una metodologıa para ampliar KL con interfase MIDI.

Explicar como funciona el sonido MIDI.

Presentar codigo fuente de las funciones MIDI.

Describir los drivers de sonido para diversos sistemas operativos.

• Presentar el diseno y descripcion formal de KL (Kernel for a mu-sic Language) un lenguaje computacional orientado al procesamiento deelementos musicales y senales acusticas.

Page 3: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 3

• Proporcionar al compositor profesional, al investigador, al desarrolladorde musica, y a la ensenanza, un medio ambiente de desarrollo musical CAC(Computer Aided Composer).

• Proporcionar un laboratorio para la la simulacion de una orquesta conmusicos digitales MIDI (Musical Instrument Digital Interface) conecta-dos en red, procesamiento de partituras y la generacion de los sonidos decada instrumento musical.

Page 4: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 4

PROBLEMATICA:

Los problemas que se presentan tanto al compositor musical profesio-nal como a los investigadores del procesamiento digital de partituras eningenierıa musical son los siguientes:

• Un compositor no cuenta con un simulador orquestal automatico quele permita comprobar sus partituras.

• Una orquesta de “carne y hueso” consume muchos recursos durante eldesarrollo de una composicion.

• Los ingenieros musicales no cuentan con un lengueje orientado a lasimulacion orquestal de tal forma que sea posible controlar la dinamica decada musico electronico-digital.

• Los lenguajes existentes no son de codigo abierto (FINALE, PROTO-OLS, CAKEWALK, QBASE, entre otros).

Page 5: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 5

COMO FUNCIONA

• KL es un lenguaje KL (Kernel for a music Languaje), es un compiladordisenado para el procesamiento digital de la musica.• Consiste de un nucleo de software (kernel) que contiene todas las fun-

ciones basicas necesarias para realizar dicho trabajo.• KL esta dividido en tres bloques principales: el analizador lexico, anali-

zador sintactico, y el analizador semantico.• KL permite generar instrucciones para MusicTeX, y este a su vez genera

instrucciones para TeX, el cual permite mostrar una partitura y enviarla ala impresora.• Puede funcionar como interprete de comandos. Con esta opcion, el

usuario interactua mediante una terminal de consola de tal forma que losresultados se muestran inmediatamente.• La entrada a KL puede ser un archivo.kl que puede contener la descrip-

cion de una cancion (p.e. do do mi sol do do! reb), o bien escribir las notascon el teclado de la consola• La salida de KL es el sonido de una melodıa y su pentagrama grafico.

Page 6: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 6

BLOQUES DE KL:

Page 7: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 7

CODIGO FUENTE PARA KL:

Page 8: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 8

CODIGO FUENTE PARA KL:

titulo(POLITECNICO)autor(Perez Prado)date(2-12-76)inst(Sax Alto)tempo(c)tono(fa mayor)clave ( sol )-- inicio de cancion

--compas 0sbeam(s, 1, 0, do)ebeam(1) do

--compas 1barra(lr)setbarra(1)dacapo(up)

Page 9: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 9

CODIGO DE SALDA KL:

Page 10: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 10

DEFINICION BAKUS NAUR FORM DE KL:

1

Descripcion formal dellenguaje KL

<statment> :: <notas>*|<commands>*<notes> :: <notac><accidente> :: b|#<numero> :: <-integer>..<+integer><digito> :: 0|1|2|3|4|5|6|7<tiempo> :: w|h|n|c|f|sf<volumen> :: p|pp|ppp|f|ff|fff<plica> :: up|dn<bcuadro> :: bc<flat> :: tst<circunf> :: cir<puntos> :: pt|rp<tbarra> :: s|d|rl|rr|rlr<modificadores> :: (<numero>,<tiempo>,<volumen>

,<plica>,<bcuadro>,<flat>,<circunf>,<puntos>)

<nota> :: do|re|mi|fa|sol|la|si<notac> :: nota[accidente]

[modificadores]<commands> :: <command><command> :: <autor><barra><casilla>

<clave><comment><cresendo><dacapo><date><decresendo><dupla><ebeam><etie><exit><inst><liga><melodia><newline><ojo><repite><sil>/<rest><sbeam><setbarra><setclave><setplica><stie><tempo><titulo><tono><triada><tupla>

<autor> :: <autor><(><string><)><barra> :: <barra>[<(><tbarra><)>]<casilla> :: <casilla><(><1|2><)><clave> :: <clave><(><sol|fa><)><comment> :: <comment><string><cresendo> :: <cresendo><(><1|2|3|4><)><dacapo> :: <dacapo><(><up|md|dn><)><date> :: <date><(><string><)><decresendo> :: <decresendo><(><1|2|3|4><)><dupla> :: <dupla><(><s|d|t><plica>

<nota><nota><)><ebeam> :: <ebeam><(><numero><,>

<nota><)><etie> :: <etie><(><1|2|3|4|5|6|7|8|

9|0><)><exit> :: <exit><inst> :: <inst><(><string><)><liga> :: <liga><(><statment><)><melodia> :: <melodia><(><statment><)><newline> :: <newline><ojo> :: <ojo><(><plica><)><repite> :: <repite><sil>/<rest> :: <sil>/<rest><(><timepo><)><sbeam> :: <sbeam><(><s|d|t><numero>

<numero><nota><)><setbarra> :: <setbarra><(><numero><)><setclave> :: <setclave><(><sol|fa><)><setplica> :: <setplica><(><up|dn><)><stie> :: <stie><(><numero><notac><)><tempo> :: <tempo><(><num/num|c|C><)><titulo> :: <titulo><(><string><)><tono> :: <tono><(><nota>[<accidente>]

<mayor|memor><)><triada> :: <triada><(><tbarra><notac>

<notac><notac><)><tupla> :: <tupla><(><s|d|t><notac>

<notac><notac><notac><)>

Page 11: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 11

DECLARACION statment

/*=============================================** statment -declaracion de entrada.**=============================================*/int statment()/*** <statment>::=[<notas>]|[<commands]*/

Page 12: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 12

{tipoToken=BEGINLINE;for(;;){tokenAnt=tipoToken;getToken();notas();commands();if (match(COMENTARIO)) break;if (match(ENDLINE)) break;if (match(SCANEOF)) break;

}

}

Page 13: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 13

ANALISIS DE NOTAS

• Cada nota puede tener un accidente (bemol o sostenido).• Pueden venir algunos parametros opcionales, todos ellos encerrados

entre parentesis redondos separados por comas como por ejemplo: do, re,do!, re(1,w,!), mi"(2,h,!,p) etc.

• La representacion general de una nota compuesta es:

<notac>::=<nota> [<accidente>][(<modificadores>)]

donde nota puede ser do, re, mi fa, sol, la, si. La palabra accidentepuede ser un sostenido (!) o un bemol ("). Los modificadores estan en-cerrados entre parentesisis redondos separados por comas que pueden serel valor de una nota como redonda (w), blanca (h) corchea (n) forte (f,)medio forte (!,) fortisimo (!f), piano (p), pianito (pp) o pianisimo(ppp).

Page 14: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 14

DECLARACION statment

/*=============================================** notas -entrada al analisis sintactico notas.**=============================================*/int notas(){/*** <notas>::=<nota>[<accidente>][(<modificadores>)]*/

if (match(COMMAND)) return(OK);

if (match(NOTA)&&tokenAnt==COMMAND) {doCommands();nota();return(OK);}

Page 15: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 15

if (match(NOTA)&&tokenAnt==BEGINLINE) {if (TEX) printf("\\notes");nota();return(OK);}

if (match(NOTA)&&tokenAnt==RPAREN) {nota();return(OK);}

if (match(NOTA)&&tokenAnt==NOTA) {doNotas();nota();return(OK);}

Page 16: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 16

if (match(ACCIDENTE)&&tokenAnt==NOTA){accidente();return(OK);}

if (match(LPAREN)&&tokenAnt==NOTA){modificadores();return(OK);}

if (match(LPAREN)&&tokenAnt==ACCIDENTE){modificadores();return(OK);}

Page 17: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 17

if (match(ENDLINE)&&tokenAnt==NOTA) {doNotas();if (TEX) printf("\\enotes");printf("\n");return(OK);}

if (match(ENDLINE)&&tokenAnt==ACCIDENTE) {doNotas();if (TEX) printf("\\enotes");printf("\n");return(OK);}

if (match(ENDLINE)) return(OK);if (match(SCANEOF)) return(OK);return(ERROR);}

Page 18: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 18

INTERFACE DE COMANDOS KL:

Page 19: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 19

CONEXION TIPICA DEL SISTEMA MIDI:

MIDICONTROLADOR

OUTIN TRUE

MIDI MIDI MIDI MIDI MIDI

TRUETRUETRUETRUETRUEININININ IN

CNXTIP.FIG

INST 1 INST 2 INST 3 INST 4 INST n

322 notas/seg. 3,225 bytes/seg.

Page 20: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 20

PROBLEMA: EXTRACCION DE DATOS:

ANALOX.FIG

G1

G2

G3

G5

G4

G6

G7

G8

G9

A

GRABACION

CONVERTIDORANALOGICO

DIGITAL

Punto comun a todas las fuentes.

1011 1000 1100 1100

Page 21: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 21

ESPECIFICACION HARDWARE MIDI:

+ 5V

+5V

4

35

2

1

14

25

3

35

2

14

MIDIIN

MIDITRUE

MIDIOUT

D1 1N914

PC−9001

2Vo

5V

5

NC

NC

NC

NC

NC

NC

NC

Rc 220

Ra 220

Rc 220

Rd 270 Rb 220

A

A

Tx

Rx

UART6850

HARDWARE ESTANDARD PARA MIDI

Ra 220

ESPHRD.FIG

Page 22: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 22

ESPECIFICACION SOFTWARE MIDI:

Page 23: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 23

ACTVACION Y APAGADO DE NOTA:

8 0 34 6 59 0 34 6 5

EVENOTA.FIG

ENCENDER NOTA (NoteOn) APAGAR NOTA (NoteOff)

NOTA VOLUMEN NOTEOFF NOTA VOLUMENNOTEON

Tiempo de Nota (delta time)

Page 24: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 24

Hilo principal

H0

H12

H6

H11

H7

H14

H1

H5

H3

H4

H10

H2

Hn H13

H8 H9

[hilos1.ppt - ps]�

Page 25: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 25

MUCHOS PROCESOS/HILOS DEDICADOS EN PARALELO

1

1hilos.tex, hilos2.ps. MPG081013

1

Page 26: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 26

TARJETA DE SONIDO

Dr. Maximino Peña Guerrero

Sistema MIDI MidiIn MidiOut

D/A A/D Sistema WAV

Driver WAV

Driver MIDI BUS BUS

M A

Page 27: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 27

Cómo funciona el driver de audio

Mezclador por Software

Mezclador por Hardware

Buffer Primario Buffers por Software

Buffers por Hardware

Tarjeta

de

Sonido

(secundarios)

Fuente: bargen98 p. 192

Altavoces

Page 28: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 28

SISTEMA DE SONIDO NATIVO: CoreAudio

• CoreAudio es una interfase de software de bajo nivel que permite desa-rrollar aplicaciones de entrada y salida de audio digital en el sistema ope-rativo Mac OSX de Apple.• Funciona con base en la tecnica de flujo de datos (streams) la cual

permite procesar en paralelo varios canales de audio para implementar unaconsola mezcladora con varios sonidos independientes.• Desafortunadamente las funciones desarrolladas con CoreAudio no son

transportables a otros sistemas operativos: solamente corren en sistamasdesarrollados por Apple.• Para resolver este problema de transportabilidad utilizamos una biblio-

teca de funciones abierta: OpenAL.1

1[ di t ][MPG071313]

Page 29: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 29

BIBLIOTECA DE FUNCIONES DE SONIDO: OpenAL

• OpenAL (Open Audio Library) es un sistema abierto que contiene unconjunto de funciones que permite programar la entrada y salida de audiosobre varios sistema operativos: UNIX, Mac OSX, Linux, MS-Windows,entre otros.• OpenAL trabaja con tres objetos basicos. (1) una fuente (source), (2)

un oyente (listener), y (3) una zona de memoria (bu!er).• Una fuente contiene apuntadores a una o varias zonas de memoria, si

como la velocidad, orientacion, e intensidad del sonido a procesar.• Un oyente contiene parametros necesarios para la reproduccion del soni-

do como son velocidad, posicion, orientacion, y volumen. Es posible definirvarios oyentes, pero solo uno de ellos se activo.• Una zona de memoria contiene muestras de audio de 8 o 16 bits (mo-

nofonico o estereo) en formato PCM, y se encuentra vinculada al hardwaredel sistema de sonido de la computadora.

1

1[ l t ][MPG071313]

Page 30: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 30

DEVICE No. 1

SOURCE 2 SOURCE 3 SOURCE 4SOURCE 1

BUFFER 1 BUFFER 2 BUFFER 3 BUFFER 4

CONTEXT No. 1LISTENER

Page 31: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 31

BUFFER S1

BUFFER S2

BUFFER Sn

BUFFER Hn

BUFFER H2

BUFFER H1

DEVICE No. 1

PRIMARY BUFFER

SOU

ND

DR

IVER

S

SOFTWARE BUFFERS

HARDWARE BUFFERS

SOFWAREMIXER

(CIRCULAR BUFFER)

MIXER(CIRCULAR BUFFER)

drvsonido.fig

HARDWARE

Page 32: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 32

Xcode: Ejemplo de programacion

1

1senoal.tex, psenoAl.ps. MPG081013

1

Page 33: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 33

DEVICE No. 1

SOURCE 2 SOURCE 3 SOURCE 4SOURCE 1

BUFFER 1 BUFFER 2 BUFFER 3 BUFFER 4

CONTEXT No. 1LISTENER

Page 34: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 34

FUNCIONAMIENTO• Para generar un tono de 1000 Hz se utiliza la seccion de codigo que

se encuentra entre las lıneas 35 y 41 donde se utiliza el vector de memoriavecData, el cual contiene una coleccion de datos x0, x1, x2,cdots , xn,para n = N-1 donde N=20000.• Para genarar un dato se utiliza la funcion sin(x) cuyo resultado se

multiplica por 32267 para tener datos de audio de 16 bits con rango de-32267 a + 32267 (0000H a FFFFH). El periodo que corresponde a 1000Hz en 11025 muestras es un incremento de 0.09 seg• alcOpenDevice() (lınea 43) abre uno de los dispositivos de audio.• Un dispositivo es una abstraccion representativa del sistema de hardware

de sonido de una iMac.• alcCreateContext() (lınea 46) crea un contexto (context) para vincular a

un un oyente (listen) y la fuente de sonido (source) a efecto de proporcionaralgunas caracterısticas del audio.• alcMakeContextCurrent() (lınea 49) crea un contexto especıfico del

sonido que se va a reproducir.1

1[funs1.tex][MPG071313]

1

Page 35: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 35

FUNCIONAMIENTO (cont ...)• alGenBu!ers() (lınea 53), genera y prepara uno de los bu!ers internos

al sistema de hardware de sonido en el cual se depositaran los datos quecontiene el vector vecData.• alBu!erData() lınea (56) realiza una copia de los datos de vecData y

los coloca en iuno de los bu!ers creados por alGenBu!ers, ademas colo-ca tambien los parametros de la reproduccion digital como bits/dato, lacantidad de datos del bu!er, y la frecuencia de muestreo.• alGenSources() (lınea 62) crea una fuente de sonido (pueden ser mas).

Para esteblecer algunas propiedades extras del sonido, como por ejemplopunto flotante, ganacia, y maxima ganancia, se utiliza la funcion alSourcef()(lınea 65),• alSourceQueueBu!ers() coloca uno junto a otro cada bu!er (aquı solo

se utiliza un unico bu!er) en una fuente (lınea 68).• alSourcePlayv() realiza la reproduccion del sonido (lınea 71) durante

un segundo proporcionado por la funcion sleep() (lınea 74).1

1[funs2.tex][MPG071313]

1

Page 36: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 36

FUNCIONAMIENTO (cont ...)

• Finalmente la funcion alSourceStop() (lınea 76) detiene el sonido y serestablece el sistema de audio de la computadora;

• Se borran las fuentes con alDeleteSources() (lınea 77) y los bu!ers conalDeleteBu!ers() (lınea 78),

• Se destruye el contexto con alcDestroyContext() (lınea 79), y por ulti-mo se cierra el dispositivo con alcCloseDevice() (lınea 80), y se libera lamemoria que ocupa el vector vecData.

1

1[funs3.tex][MPG071313]

1

Page 37: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 37

CONCLUSIONES:

• Se presento lo mas relevante del diseno del lenguaje KL para escrituraen lenguaje natural notas musicales tal como un alumno ”solfea”duranteel aprendizaje de los primeros conceptos musicales.• La ventaja de escribir notas con sus nombres naturales (no con sımbolos

especiales) es la facilidad que tiene un musico para escribir una partiturasin tener que aprender caracteres especiales.• El lenguaje KL y su compilador es una interfase entre el escritor de

partituras y un sistema de impresion grafica.• Un compositor escribe un programa fuente el cual describe una partitu-

ra, traduce este programa con el compilador KL a sımbolos en MusicTeX,se genera un programa fuente en TeX el cual genera codigo binario paragraficos de pantalla o una impresora.

Page 38: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 38

• KL integra todo un medio ambiente para facilitar la composicion demusica.• KL visualiza pentagramas en una terminal grafica como Xwindows

(UNIX/Linux), OpenGL, MS-Windows.• KL cepta y genera archivos en formato MIDI a sintetizadores para

reproducir el sonido, entre otras funciones especiales.

Page 39: ecni- L´´´exico deral. · 2017-08-07 · KL : 5 CUNCIONA´ • r dise˜m´usica. • n´fun-´trabajo. • ´anali-´´antico. • ´genera a a. • ´ci´l interact´los inmediatamente

Conecting MIDI to KL ponkl.tex pg: 39

GRACIAS...

http://www.max.esimez.ipn.mx