Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 ·...

72
Proyecto OpenPipe VII Jornadas sobre Software Libre (GPUL) Uniendo música y Software Libre http://openpipe.wordpress.com/ Santiago J. Barro Torres <[email protected]

Transcript of Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 ·...

Page 1: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

Proyecto OpenPipe

VII Jornadas sobre Software Libre (GPUL)

Uniendo música y Software Libre

http://openpipe.wordpress.com/ 

Santiago J. Barro Torres <[email protected]

Page 2: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

2

“Menú del día”

Proyecto OpenPipe¿Qué?¿Por qué?

El Mundo MIDIIntroducción conceptualDispositivos, mensajes, conexiones

Síntesis de AudioIntroducción a la Tecnología de SintetizadoresPaquete sf2tools

Diseño Conceptual de OpenPipeEventos y sensoresUnidad de procesamiento

Page 3: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

3

“Menú del día”

Proyecto OpenPipe¿Qué?¿Por qué?

El Mundo MIDIIntroducción conceptualDispositivos, mensajes, conexiones

Síntesis de AudioIntroducción a la Tecnología de SintetizadoresPaquete sf2tools

Diseño Conceptual de OpenPipeEventos y sensoresUnidad de procesamiento

Page 4: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

4

Proyecto OpenPipe

Filosofía OpenSource

Contexto: Informática musical

En realidad, son varios proyectos en uno:

Nivel 0 (kernel): Diseño de un controlador MIDI con apariencia de flauta o gaita. OpenPipeNivel 1: Software relacionado directamente con OpenPipe: Software de configuración y personalización. Paquete sf2toolsNivel 2: Cualquier elemento adicional que pudiera tener relación con OpenPipe. ¿Una live? ¿Web con partituras?

Page 5: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

5

¿Qué es OpenPipe?

Informática musical

Interactividad: Comunicación con el PC

Ej.: Composición en un editor de partiturasOpción A: Introducir nota a nota con el ratónOpción B: Utilizar un piano MIDI

¿Qué opción escogeríais vosotros?

Page 6: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

6

¿Qué es OpenPipe?

¡Y no sólo eso!

Podemos tocar con nuestro ordenador

Podemos escoger el instrumento

Algoritmos en tiempo real que generen ritmos, armonías básicas, etc

¿Y por qué no?

¡Podría ser nuestro profesor particular!

Page 7: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

7

¿Qué es OpenPipe?

¡CREATIVIDAD!Todo un mundo de posibilidades.

¿No os parece fascinante?

Además:

¡El Software Libre no puede permanecer indiferente!

Page 8: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

8

¿Por qué OpenPipe?

Estupendo, estupendo. Pero, ¿realmente merece la pena?

En nuestra tierra existe una gran tradición musical

La gaita es uno de los instrumentos más representativos

Existe una gran comunidad “gaiteiril”:Clases de gaitaGrupos y bandasMúsicos profesionales: ¡Carlos Núñez!

Page 9: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

9

¿Por qué OpenPipe?

La gaita tiene proyección internacional:AsturiasIrlandaBretañaEscociaBulgariaTurquíaRepública ChecaCroaciaIndiaAlemaniaTúnez...

Page 10: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

10

¿Por qué OpenPipe?

PeculiaridadesMaterial de construcción

 Madera Metal

Forma del “punteiro” Cónico Cilíndrico

Mecanismo de fuelle Habitualmente, una bolsa de aire: “Fol”

Tipo de “palleta”Tono de afinaciónDigitación

 Digitación abierta Digitación cerrada

..

Page 11: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

11

¿Por qué OpenPipe?

¿Qué detalles deberíamos tener en cuenta para construír un modelo “electrónico”?

¡La mayoría son innecesarios!

Únicamente necesitamos una estructura cilíndrica (o similar) que detecte las pulsaciones:

¡El resto lo hace el hardware y el software!

Es más, el modelo es extrapolable a cualquier instrumento de viento: Flauta, clarinete, ...

¡Podemos imitar el sonido de cualquier instrumento! (Gracias a la síntesis por software).

Page 12: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

12

¿Por qué OpenPipe?

Existen alternativas de calidad:Gaita MIDI (¡La de Hevia!)E­PipeV­PipeMaster Gaita...

¿Estamos “reinventando” la rueda?

Page 13: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

13

¿Por qué OpenPipe?

¡No! OpenPipe es especial en varios sentidos:

Es una de las primeras alternativas basada en una filosofía “Open Source”:

 Puede que la primera ¡Es Hardware + Software Libre!

Inconvenientes con las anteriores alternativas Imposibilidad de personalización

 Existe cierta insatisfacción al respecto Precio desorbitado

 Sobre todo para uso no profesional ¿Hasta qué punto hay compatibilidad con GNU/Linux?

 No existe garantía al respecto

Page 14: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

14

“Menú del día”

Proyecto OpenPipe¿Qué?¿Por qué?

El Mundo MIDIIntroducción conceptualDispositivos, mensajes, conexiones

Síntesis de AudioIntroducción a la Tecnología de SintetizadoresPaquete sf2tools

Diseño Conceptual de OpenPipeEventos y sensoresUnidad de procesamiento

Page 15: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

15

El Mundo MIDI

¡Bienvenidos al Mundo MIDI!MIDI son las siglas de “Interfaz Musical para Instrumentos Digitales”Estandar “de facto” para la comunicación entre dispositivos musicales electrónicos

 Los “dispositivos musicales electrónicos” son los “habitantes” del Mundo MIDI :­)

MIDI define un FAP Formato de los mensajes Protocolo

 Tiempo real Orientado a mensajes No orientado a conexión Realmente sencillo

Page 16: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

16

El Mundo MIDI

MIDI representa información musicalIgual que una partitura, pero ¡no son equivalentes!

 ¿Acaso son equivalentes un diagrama de clases y su implementación? Una partitura tiene infinidad de matices

Tipos de información musical

Page 17: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

17

El Mundo MIDI

Representación de la Información Musical:Partitura, representación simbólica

MIDI, representación orientada a mensajes

NOTE_ON(do) ... NOTE_OFF(do)NOTE_ON(mi) ... NOTE_OFF(mi)NOTE_ON(sol) ... NOTE_OFF(sol)NOTE_ON(mi) ... NOTE_OFF(mi)

Page 18: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

18

El Mundo MIDI

MIDI define un conjunto de mensajes que permiten describir diversos “fenómenos musicales” a medida que se producen:

Inicio de nota, fin de notaIntensidad

Otros más complejos (en el caso del piano):Pedal derecho:

Fuerte o de ResonanciaPedal izquierdo

Celeste o SordinaPedal central

Tonal o Sostenuto

Page 19: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

19

El Mundo MIDI

Habitantes del mundo MIDIControladores

 “Capturan” la interpretación del músico y generan los mensajes MIDI correspondientes ¡Aquí estaría OpenPipe!

Sintetizadores Generan sonido como resultado de la recepción de mensajes MIDI

Secuenciadores Tienen la capacidad de “operar” sobre mensajes MIDI:

 Almacenarlos en un fichero Editarlos Reproducirlos

 ¡Necesaria una marca de tiempo (timestamp)!

Page 20: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

20

El Mundo MIDI

Esquema de un Sistema MIDI:

Page 21: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

21

El Mundo MIDI

Ficheros MIDIEs un contenedor de mensajes MIDI con timestamps

Posiblemente con datos adicionales¿Lyrics?

(Letras de canciones)

Estructurado en pistas Facilitar su edición Puede confundir

 ¿Diferentes pistas diferentes instrumentos? ¡No! A menos que cada pista esté asociada a un canal distinto.

Page 22: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

22

El Mundo MIDI

Conexiones MIDISon conexiones “punto a punto”UnidireccionalesTres conectores, según su funcionalidad:

 MIDI IN Entrada de mensajes MIDI. Ej.: Sintetizador.

 MIDI OUT Salida de mensajes MIDI Ej.: Controlador

 MIDI THRU Repite lo que le llega por MIDI IN. Permite “conexiones en cadena” (daisy chain). Ej.: Sintetizador.

Page 23: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

23

El Mundo MIDI

Ejemplos:

Page 24: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

24

El Mundo MIDI

Ejemplos:

Page 25: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

25

El Mundo MIDI

Ejemplos:

Page 26: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

26

El Mundo MIDI

Ejemplos:

Page 27: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

27

El Mundo MIDI

Ejemplos:

Page 28: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

28

El Mundo MIDI

Ejemplos:

Page 29: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

29

El Mundo MIDI

Ejemplos:

Page 30: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

30

“Menú del día”

Proyecto OpenPipe¿Qué?¿Por qué?

El Mundo MIDIIntroducción conceptualDispositivos, mensajes, conexiones

Síntesis de AudioIntroducción a la Tecnología de SintetizadoresPaquete sf2tools

Diseño Conceptual de OpenPipeEventos y sensoresUnidad de procesamiento

Page 31: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

31

Síntesis de Audio

Pensemos en el siguiente subconjunto de MIDI

¿Cómo distinguimos unas notas de otras? Tenemos que distinguir

 Qué nota es de la escala Ej.: Un Do.

 Si está alterada (sostenido, bemol o becuadro) Ej.: Un Do#.

 La octava a la que pertenece Ej.: Un Do# de la 3ª octava.

Page 32: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

32

Síntesis de Audio

Cada nota de la escala tiene un identificador numérico: Identificador MIDI

Ej.: Escala cromática de Do

Page 33: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

33

Síntesis de Audio

Modelo de Síntesis de AudioSíntesis por Tabla de Ondas

 Existen otros modelos Ej.: Síntesis FM

 Se realiza a partir de muestras (samples) grabadas de instrumentos reales

 Concepto de “banco de sonidos” Almacena la “definición” de instrumentos Cada instrumento tiene asignado

 Preset: Identificador numérico que permite distinguir dos instrumentos de un mismo banco. Bank:Identificador numérico para distinguir dos preset de bancos distintos.

 Variantes de un mismo instrumento. La asignación está “estandarizada”

 General MIDI.

Page 34: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

34

Síntesis de Audio

Modelo de Síntesis de Audio Mensajes MIDI como entrada

 De un controlador o un secuenciador Posiblemente configuraremos un instrumento diferente para cada canal en el sintetizador

 Sonido audible a la salida Los instrumentos están definidos en el banco

 ¡Diseño modular!

Page 35: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

35

Síntesis de Audio

El banco de sonidos......es una estructura de datos almacenada en un fichero o en una memoria...contiene la definición de uno (o más) instrumentos...es configurable en determinados sintetizadores

 Ej.: Sintetizadores Software FluidSynth Synthfont

 ¡Pero también en Sintetizadores Hardware!En ambos casos, el sintetizador tiene que estar preparado para cargar un banco de sonidos externo.

Tecnologías de bancos de sonidos: GUS Patch: “Gravis Ultra Sound” SoundFont: Especificaciones abiertas de Creative

Page 36: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

36

Síntesis de Audio

¡Aprenderemos a definir instrumentos!

La definición de un instrumento consta de dos partes:1.  Definición de Samples.2.  Definición de Articulación.

Supongamos un escenario típico:Queremos definir un instrumento para utilizar en nuestro sintetizador.

 Disponemos de: Un instrumento musical cualquiera. Micrófono. Software para grabar audio.

 ¡Audacity!

Page 37: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

37

Síntesis de Audio

Por ejemplo, supongamos que se hemos grabado las siguientes notas:

Queremos definir un instrumento “gaita”Tenemos que especificar qué sonido se obtendrá según cada petición NOTA_ON

 Identificadores 0 – 127 Por sencillez, sólo definiremos para el rango 60 – 72, correspondientes a la escala cromática de Do.

Page 38: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

38

Síntesis de Audio

No se conoce, a priori, la correspondencia Nota MIDI – Sample

 Tendremos que definirla, de alguna forma

¡No existe un sample para cada nota!Truco: Modificar la frecuencia de una nota que sí tengamos sampleada para obtener las restantes notas

 Es preciso conocer la nota asociada a cada sample No es conveniente abusar de ésta técnica

 ¿Dónde está el equilibro? ¡Depende! ¿Es importante la calidad? ¿Es determinante el tamaño de la tabla de ondas? ¿Puede haber problemas con el procesamiento? ¿Un compromiso entre varios factores?

 Utilizaremos éste truco con las notas “cercanas” a la nota sampleada

 La “cercanía” es, por supuesto, relativa.

Page 39: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

39

Síntesis de Audio

Ejemplo 1:Disponemos de un Do y un Mi sampleadosNos llega un NOTA_ON(Re). ¿Qué sample utilizamos?

 Distancia(Do, Re) = 1 Tono Distancia(Re, Mi) = 1 Tono

Respuesta: Es indiferente

Ejemplo 2:Disponemos de un Do y un Mi sampleadosNos llega un NOTA_ON(Do#). ¿Qué sample utilizamos?

 Distancia(Do, Do#) = 1 Semitono Distancia(Do#, Mi) = 1 Tono y 1 Semitono

Respuesta: Es mejor utilizar el sample Do La distancia es menor, y por tanto el efecto de la distorsión también es menor

Page 40: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

40

Síntesis de Audio

¡Hey! ¡Tenemos un ejemplo pendiente!

Aquí os propongo una posible asignación Como habréis deducido, eso quiere decir que no es la única posible :­)

Page 41: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

41

Síntesis de Audio

Significado de “Articulación” en música

Page 42: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

42

Síntesis de Audio

Paquete sf2toolsEs un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos de sonidos en formato SoundFont

 Extensión “.sf2” Soportado por FluidSynth y por timidity

 Existen versiones para GNU/Linux y para Windows

Forma parte del proyecto OpenPipeEstaría dentro del Nivel 1http://openpipe.wordpress.com/descargas/

 Formato “.zip” Formato “.tar.gz” Última versión disponible vía svn

Page 43: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

43

Síntesis de Audio

Contenido de sf2tools 1.0.0sf2maker

 Pequeño compilador capaz de generar un banco de sonidos SoundFont­compatible

 Necesitamos archivos wav con los samples. La descripción estará almacenada en un pequeño script.

 También admite modo interactivo.

sf2info Genera una descripción en XML del banco de sonidos

 Útil para desarrolladores, usuarios avanzados o incluso terceras aplicaciones. Es capaz de extraer los samples “incrustados” en el banco de sonidos.

stereo2mono Necesitamos trabajar con .wav en formato mono

Page 44: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

44

Síntesis de Audio

Contenido de sf2tools 1.0.0Documentación de Usuario

 Más de 60 páginasSamples de tres instrumentos distintos

 Flauta Alto Flauta Soprano Tin Whistle

 Una especie de flauta irlandesa.

Seis scripts de ejemplo para sf2maker Con los que se crean seis bancos de sonidos de ejemplo

Ficheros MIDI para probar Se especifica la configuración de timidity para poder apreciar los cambios

Page 45: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

45

Síntesis de Audio

La tecnología Soundfont sigue el modelo aquí descrito:

Definición de Samples Se cargan a partir de archivos “.wav” Identificados por un número

Definición de Articulación Se consigue a partir de la definición de “zonas” Una zona es un concepto abstracto que aglutina:

 Un conjunto de notas MIDI. Un sample asociado. Un conjunto de propiedades.

Page 46: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

46

Síntesis de Audio

Siguiendo con nuestro ejemplo:

Crearíamos cuatro zonas (de izda. a dcha.) Cada una tiene asociada un conjunto de Notas MIDI

 Propiedad keyRange Ejemplo. Zona 1. keyRange(60, 62)

 Cada una tiene asociado un sample Propiedad sampleId

 Ejemplo. Zona 1. sample 0. Suponiendo que “do.wav” es el sample 0. 

Page 47: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

47

Síntesis de Audio

PropiedadesEn la tecnología Soundfont se denominan “generators”

 Nomenclatura un tanto confusaExisten gran cantidad de “generators”

 A nivel básico, los más importantes son sampleID: Identificador 53. keyRange: Identificador 43. pan: Identificador 17. chorusEffectsSend: Identificador 15. reverbEffectsSend: Identificador 16.

Es interesante tener dos tipos de zonasUna zona global

 Los “generators” tienen aplicación en todas las zonas del instrumento

Varias zonas locales

Page 48: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

48

Síntesis de Audio

Demostración

Page 49: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

49

“Menú del día”

Proyecto OpenPipe¿Qué?¿Por qué?

El Mundo MIDIIntroducción conceptualDispositivos, mensajes, conexiones

Síntesis de AudioIntroducción a la Tecnología de SintetizadoresPaquete sf2tools

Diseño Conceptual de OpenPipeEventos y sensoresUnidad de procesamiento

Page 50: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

50

Diseño Conceptual de OpenPipe

El objetivo principal del proyecto es proporcionar el diseño e implementación de un controlador MIDI con apariencia de una flauta o una gaita

Nivel 0 (kernel)

Page 51: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

51

Diseño Conceptual de OpenPipe

Noción de “evento”Un evento es un hecho cuya ocurrencia tiene un significado especial para nosotros

 Normalmente un evento conlleva la ejecución de una determinada acción

Que un hecho sea evento o no depende del contexto Por ej.: Si diseñamos un controlador MIDI con apariencia de piano, posibles eventos serían:

 “Pulsar” una tecla. “Dejar de pulsar” una tecla.

 En cambio, si diseñamos un controlador MIDI con apariencia de violín, posibles eventos serían:

 “Frotar” una cuerda. “Dejar de frotar” una cuerda.

Page 52: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

52

Diseño Conceptual de OpenPipe

Noción de “evento”Que un hecho sea evento o no depende del contexto... ¡y también del nivel de detalle!

En el ejemplo del piano:¿Nos interesa conocer con qué intensidad ha sido pulsada la tecla?¿Estamos interesados en “emular” el comportamiento de los pedales?

 Lo más normal sería incorporar pedales al controlador MIDI.

En el ejemplo del violín:¿Nos interesa conocer con qué intensidad ha sido frotada una cuerda?¿Nos interesa detectar el “vibratto”?

Page 53: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

53

Diseño Conceptual de OpenPipe

Noción de “evento”El concepto de evento es intencionadamente abstracto:

 En el caso del piano: Cuando pulsas una tecla, suena una nota.

 En el caso del violín: Cuando frotas una cuerda, suena una nota.

 Son dos hechos distintos, pero desencadenan la misma acción

Lo complicado es detectar el evento Necesitamos de dispositivos electromecánicos capaces de generar información eléctrica sobre la ocurrencia del evento

 Por ej.: Teclas, sensores, etc.

Sin embargo, una vez obtenida la información en forma de señal, el procesamiento es sencillo

 La señal puede ser analógica o digital

Page 54: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

54

Diseño Conceptual de OpenPipe

Apliquemos lo comentado a OpenPipe¿Qué evento estamos interesados en detectar?

 Respuesta: ¡Que un agujero ha sido “tapado” o “destapado”! Denominaremos “postura” a un conjunto de agujeros tapados / destapados.

 Cada nota que puede tocar el instrumento tiene asociada, al menos, una postura.

 Pueden existir varias notas con posturas alternativas. Denominaremos “digitación” al conjunto de todas las posturas posibles en un determinado instrumento

 La digitación debería ser configurable. Ejemplo de digitaciones alternativas:

En el caso de la flauta existe la digitación “barroca” y la digitación alemana.En el caso de la gaita existe la digitación “abierta” y “cerrada” (¡y muchas más!).

Page 55: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

55

Diseño Conceptual de OpenPipe

Detección de la posturaOcho “sensores”

 Posiblemente se añadirá uno de controlCada “sensor” funciona de forma sensitiva

 ¡No de forma mecánica! Sería demasiado engorroso.

 Cambiaría de estado simplemente con pasar el dedo por encima

Problema ¿Dónde conseguir dicho dispositivo? O alternativamente, ¿cómo construír dicho dispositivo?

Page 56: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

56

Diseño Conceptual de OpenPipe

Un posible “sensor”:

Page 57: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

57

Diseño Conceptual de OpenPipe

 Nuestro cuerpo genera electricidad. Si tocamos con nuestra mano un punto cualquiera del circuito mostrado en la figura anterior, introduciremos una pequeña componente de corriente, de unos pocos miliamperios

 La cantidad aproximada habría que estimarla

Si la resistencia es lo suficientemente grande, la corriente que circula por el circuto es pequeña (según la ley de Ohm: V = IR), por lo que llegará un momento en el que la corriente introducida por la persona será significativamente grande como para detectar cuándo el usuario está tocando el circuito, y cuándo no

 Sin embargo, el valor de tensión a la salida es impreciso, por lo que habría que pasarlo por un comparador, que generaría finalmente un valor alto o bajo de tensión

Page 58: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

58

Diseño Conceptual de OpenPipe

Agrupando ocho o nueve sensores en un cilindro: 

Page 59: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

59

Diseño Conceptual de OpenPipe

Los cabezales de los “sensores” se incrustarían (literalmente) en el cilindro

 El resto de la circuitería del sensor estaría dentro de la unidad de procesamiento El cilindro puede ser de madera, plástico, ...

Page 60: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

60

Diseño Conceptual de OpenPipe

Una vez obtenidas las entradas, ¿quién realiza el “procesamiento”?

Un microcontrolador Por ej.: El 8051. Características:

 Arquitectura Harvard CPU de 8 bits 2 contadores / temporizadores 4 puertos de entrada / salida de 8 bits Una UART Cinco fuentes de interrupción

2 externas2 para los temporizadores1 para el puerto serie

 Oscilador interno ...

Page 61: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

61

Diseño Conceptual de OpenPipe

Tarea del microcontroladorSe encarga de realizar la correspondencia “postura” ­ “Nota MIDI”

Se genera un evento NOTE_ON / NOTE_OFF por la interfaz de salida MIDILa correspondencia se realiza mediante una tabla almacenada en memoria

Cada fila de la tabla contiene una postura (en representación vectorial) y una nota MIDI asociadaPara encontrar la nota MIDI tenemos que buscar secuencialmente en toda la tabla

 La tabla probablemente no tendrá más de 30 entradas.

Page 62: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

62

Diseño Conceptual de OpenPipe

Algoritmo:EstadoAnteriorSensorI = estadoSensorI = detectarEstadoSensorI();

eventoNoteON(estadoSensorI);

while(1 + 1 != 7) {

while(estadoSensorI == estadoAnteriorSensorI) {

estadoSensorI = detectarEstadoSensorI();

}

eventoNoteOFF(estadoAnteriorSensorI);

eventoNoteON(estadoSensorI);

estadoAnteriorSensorI = estadoSensorI;

}

Page 63: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

63

Diseño Conceptual de OpenPipe

Notas sobre la implementación:Notación vectorial

La letra I representa una operación sobre un conjunto de 8 valores binarios

 Un valor por cada sensor.

Detección del estado de los “sensores”Representado simbólicamente por la pseudofunción detectarEstadoSensorI()

 En la práctica, se traduce por consultar un bit de estado en uno de los registros del microcontrolador.

Pseudofunciones eventoNoteOFF y eventoNoteONEnvía un mensaje NOTE_OFF o un mensaje NOTE_ON por la interfaz de salida

 Antes se busca la nota MIDI correspondiente en la tabla. La postura se pasa por argumento.

 ¡Un vector de ocho valores binarios!

Page 64: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

64

Diseño Conceptual de OpenPipe

Tabla de Digitación Primera aproximación

Page 65: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

65

Diseño Conceptual de OpenPipe

La primera aproximación......es una tabla de digitación correspondiente a una gaita gallega

 ¡Digitación abierta!Para utilizar otra digitación distinta, basta con definir una nueva tabla

 El microcontrolador debe poseer un modo de configuración, en el que se introducirá una nueva tabla

 Un programita que se comunica con el microcontrolador por el puerto serie.

¡Sin embargo, se puede mejorar!

Page 66: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

66

Diseño Conceptual de OpenPipe

Tabla de DigitaciónSegunda aproximación: NotaBase = 61.

Page 67: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

67

Diseño Conceptual de OpenPipe

El funcionamiento es diferenteAntes, la tabla proporcionaba directamente la nota MIDI asociada a una posturaAhora, al valor obtenido en la tabla, se le suma el valor de una variable: NotaBase

 Si NotaBase es 61, funciona igual que el caso anterior ¡Pero ahora podemos tocar en cualquier tonalidad!

 En la gaita gallega, existen tres variedades principales: Redonda (Do), Grileira (Re) y Tumbal (Sib).

Habitualmente comparten digitación, aunque estén en distintas escalas.Para conseguir el mismo efecto, basta con asignar NotaBase a 59, 61 y 57, respectivamente.

 Algo similar sucede con las flautas:Flauta Alto, afinada en Fa.Flauta Soprano, afinada en Do.

Page 68: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

68

Diseño Conceptual de OpenPipe

MIDI OUTSe puede obtener la salida MIDI a partir del puerto serie

Page 69: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

69

Diseño Conceptual de OpenPipe

MIDI INSe puede obtener la entrada MIDI a partir del puerto serie

Page 70: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

70

Diseño Conceptual de OpenPipe

Simulación Software

Page 71: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

71

Transparencia Final

¡Gracias por vuestra atención!¡Os habéis portado muy bien!

¡Ahora os toca a vosotros!PreguntasComentariosIdeasDudasInquietudes...

Page 72: Proyecto OpenPipe - GPULstuff.gpul.org/2007_jornadas/doc/2007_JSL_01_OpenPipe.pdf · 2011-03-26 · Es un conjunto de aplicaciones GPL diseñadas para facilitar la creación de bancos

72

Referencias

Blog del proyectoPágina principal

http://openpipe.wordpress.com/Documentación en pdf

Artículo – Introducción al Proyecto OpenPipeArtículo – Introducción a la Tecnología de SintetizadoresDiseño Conceptual de un Controlador MIDI

Software descargablesf2tools

http://www.wikipedia.org/http://www.indiana.edu/~emusic/etext/MIDI/chapter3_MIDI2.shtml

http://www.tigoe.net/pcomp/midi.shtml...