archivos de onda.ppt [modo de compatibilidad]tamarisco.datsi.fi.upm.es/asignaturas/pro-mul/... ·...

68
PROGRAMACIÓN MULTIMEDIA ARCHIVOS DE ONDA ARCHIVOS DE ONDA ARCHIVOS DE ONDA ARCHIVOS DE ONDA (.WAV) (.WAV) (.WAV) (.WAV)

Upload: hoangliem

Post on 29-Sep-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

PROGRAMACIÓN MULTIMEDIA

ARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDA

(.WAV)(.WAV)(.WAV)(.WAV)

Page 2: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

�Estructura Interna de un WAV

�Qué es un archivo de onda

2

�API de bajo nivel

�Interfaz de Controles Multimedia (MCI)

Page 3: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� Ficheros con extensión .WAV: Estándar de Microsoft.

� En esencia: conjunto de muestras de

Qué es un archivo de ondaQué es un archivo de ondaQué es un archivo de ondaQué es un archivo de onda

3

� En esencia: conjunto de muestras de una señal sonora.

�Muestreo: Criterio de Nyquist.

�Niveles de cuantización.

Page 4: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

Qué es un archivo de ondaQué es un archivo de ondaQué es un archivo de ondaQué es un archivo de onda

4

Page 5: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda

5

Page 6: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda

6

Page 7: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda

7

Page 8: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda

8

Page 9: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda

9

Page 10: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda

10

Page 11: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda Qué es un archivo de onda

11

Page 12: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� ARCHIVOS RIFF: (Formato de Fichero para Intercambio de Recursos)

� Estructurado en bloques (chunks)

� Cada bloque se identifica por medio de un código de 4 caracteres. (FOURCC).

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

12

� Cada bloque se identifica por medio de un código de 4 caracteres. (FOURCC).

Funciones especiales para escribir estos códigos:

mmioFOURCC (‘R’,’I’,’F’,’F’);

mmioStringToFOURCC (“Riff”,0);

Page 13: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

RIFFWAVE

13

LIST INFO

ICOP ICRD

fmt data

Page 14: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� Cada bloque contiene:

-Un identificador (FOURCC)

-Un tamaño (bytes)

-Datos

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

14

-Datos

El identificador del primer bloque debe ser RIFF

� Hay dos tipos de bloques que pueden tener subbloques: RIFF y LIST. Estos, además, llevan asociado un tipo.

RIFF� AVI, PAL, RMID, RMMP, WAVEWAVEWAVEWAVE

LIST� INFO...

Page 15: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� Estructura MMCKINFO (una por bloque):

- ckid � Identificador del bloque

- cksize �longitud de los datos del bloque (bytes)

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

15

- cksize �longitud de los datos del bloque (bytes)- fccType � Tipo de bloque (para RIFF o LIST)

- dwDataOffset � número de bytes desde el ppio del archivo hasta el comienzo de los datos del bloque.

- dwFlags � indicadores de uso interno.

Page 16: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� Funciones para moverse por los chunks: (todas devuelven 0 si ha ido bien, -1 en caso contrario).

mmioDescend ()

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

16

mmioDescend ()

- Identificador del fichero.

- Estructura MMCKINFO de la estructura a la que vamos a descender (se rellenará con datos)

- Estructura MMCKINFO de la estructura padre

- Indicadores

Page 17: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

Indicadores:

� MMIO_FINDRIFF: buscará un bloque con identificador RIFF que sea del tipo indicado en el campo fccType de

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

17

RIFF que sea del tipo indicado en el campo fccType de la estructura que pasamos como segundo parámetro.

� MMIO_FINDLIST: igual que el anterior, con chunks LIST

� MMIO_FINDCHUNK: bloque con un determinado identificador. (campo ckid de la estructura)

Page 18: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� Funciones para moverse por los chunks: (todas devuelven 0 si ha ido bien, -1 en caso contrario).

mmioAscend ()

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

18

mmioAscend ()

- Identificador del archivo.

- Estructura MMCKINFO con información sobre el bloque con el que acabamos de trabajar.

- Parámetro reservado: DEBE ser cero.

Page 19: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� Funciones para moverse por los chunks: (todas devuelven 0 si ha ido bien, -1 en caso contrario).

mmioCreateChunk ()

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

19

mmioCreateChunk ()

- Identificador del archivo.

- Dirección de una estructura MMCKINFO que contiene información sobre el bloque que se va a crear.

- Indicador: debe ser MMIO_CREATERIFF (para crear chunks RIFF), MMIO_CREATELIST (para crear chunks LIST) o NULL (para crear cualquier otro tipo de chunks)

Page 20: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� Posición de los punteros:

� Tras mmioDescend, al principio de los datos que contiene el chunk. (propicio para usar mmioRead )

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

20

contiene el chunk. (propicio para usar mmioRead )

� Tras mmioCreateChunk, al final de la cabecera del chunk (propicio para construir una zona de datos con mmioWrite)

� Tras mmioAscend, el puntero se queda al final del bloque padre

Page 21: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

Estructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAV

� API DE BAJO NIVEL: FUNCIONES BÁSICAS:

� mmioOpen()

21

- cadena especificando el path del archivo- dirección de una estructura MMIOINFO

- indicadores que especifican el modo en el que se va a abrir el archivo.

(MMIO_READ, MMIO_WRITE, MMIOREADWRITE...)

Devuelve: un descriptor, de tipo HMMIO que será utilizado por las demás funciones.

Page 22: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

� API DE BAJO NIVEL: FUNCIONES BÁSICAS:

� mmioRead()

22

- identificador del archivo (devuelto por mmioOpen)

- dirección del bloque de memoria donde se almacenará la información leída

- Número de bytes a leer (entero largo)

Devuelve: número de bytes leidos, o –1 en caso de error.

Page 23: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

� API DE BAJO NIVEL: FUNCIONES BÁSICAS:

� mmioWrite()

23

- identificador del archivo (devuelto por mmioOpen)

- dirección del bloque de memoria donde se almacenará la información escrita

- Número de bytes escritos (entero largo)

Devuelve: número de bytes escritos, o –1 en caso de error.

Page 24: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� API DE BAJO NIVEL: FUNCIONES BÁSICAS:

� mmioSeek()

- identificador del archivo (devuelto por mmioOpen)

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

24

- identificador del archivo (devuelto por mmioOpen)

- número de bytes que queremos desplazar el puntero. (entero largo)

- Indicador que determina la posición desde la que se realizará el desplazamiento. (SEEK_SET, SEEK_CUR, SEEK_END)

Devuelve: número de bytes desde el principio hasta la nueva posición fijada, o –1 en caso de error.

Page 25: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� API DE BAJO NIVEL: FUNCIONES BÁSICAS:

� mmioClose()

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

25

- identificador del archivo (devuelto por mmioOpen)

Devuelve: 0 si todo ha ido bien, o –1 en caso de error.

Page 26: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� Información más importante del formato (PCMWAVEFORMAT):

� Archivo mono o estéreo.

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

26

� Archivo mono o estéreo.

� Frecuencia de muestreo (11.025, 22.050 ó 44.100)

� Bits por muestra (8 ó 16)

� Bytes por segundo que se debe intercambiar con la tarjeta de sonido para grabación o reproducción

Page 27: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

RIFFWAVE

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

27

LIST INFO

ICOP ICRD

fmt data

Page 28: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� Definir una estructura MMCKINFO llamada raíz, con el campo fccType relleno con el código WAVE

Estructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEjemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV

28

WAVE

� Llamar a mmioCreateChunk() pasando el identificador del archivo, la estructura raíz y el indicador MMIO_CREATERIFF

� Definir otra estructura MMCKINFO llamada lista, con el campo fccType relleno con el código INFO

Page 29: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� Llamar de nuevo a mmioCreateChunk(), con la estructura Lista y el indicador MMIO_CREATELIST.

Estructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEjemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV

29

MMIO_CREATELIST.

� Crear una tercera estructura MMCKINFO llamada Información con el campo ckid relleno con el código ICOP

� Llamar a mmioCreateChunk(), con la estructura Información y NULL como indicador.

Page 30: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� Utilizamos mmioWrite() para escribir la información de copyright

� Llamamos a mmioAscend() pasando como

Estructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEjemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV

30

� Llamamos a mmioAscend() pasando como parámetro la estructura información. (puntero, al final del bloque LIST)

� Análogamente a como hemos creado el bloque ICOP, creamos el bloque ICRD. El último paso será la llamada a mmioAscend(), con información como argumento

Page 31: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� Hemos finalizado con LIST y sus sub-bloques. Llamamos a mmioAscend() pasando como parámetro la estructura lista (puntero, al final

Estructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEjemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV

31

parámetro la estructura lista (puntero, al final del bloque RIFF)

� Preparamos una nueva estructura MMCKINFO, llamada formato, asignando al campo ckid el código fmt

� Nueva llamada a mmioCreateChunk, pasando como argumento la estructura formato.

Page 32: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� Usando mmioWrite() escribimos la información correspondiente al formato del sonido

Estructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEstructura Interna de un WAVEjemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV Ejemplo: Creación de un WAV

32

� Nueva llamada a mmioAscend(), con formato como argumento

� La operación para crear el bloque data es análoga a la llevada anteriormente

� Finalizamos llamando a mmioAscend() pasando como parámetro la estructura raiz

Page 33: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� ¿Qué podemos hacer con las muestras?

�MODIFICAR EL VOLUMEN.

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

33

- Para ello, únicamente hay que multiplicar todas las muestras por un valor.

- Cuidado con el desbordamiento

Page 34: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� ¿Qué podemos hacer con las muestras?

� SUMAR SONIDOS

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

34

- Multiplicar previamente cada sonido por un factor menor que la unidad, siendo la suma de todos los factores igual a 1.

- Normalmente al final habrá que subir el volumen.

Page 35: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� ¿Qué podemos hacer con las muestras?

� DESVANECER

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

35

- Multiplicar las muestras por una función decreciente.

- Ej. (num de muestras – x) / num. de muestras

- x� posición de la muestra

Page 36: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� ¿Qué podemos hacer con las muestras?

� INTENSIFICAR

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

36

- Multiplicar las muestras por una función creciente.

- Ej. X / 11.025- Ej. (X / 1000 +1) / 2,487- Ej. X^2 / 121.550.625

- x� posición de la muestra

Page 37: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� ¿Qué podemos hacer con las muestras?

� ECO

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

37

- Sumar un sonido consigo mismo, pero desplazado en el tiempo y disminuyendo su volumen.

Page 38: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� ¿Qué podemos hacer con las muestras?

� SEPARAR CANALES DE UN ARCHIVO ESTEREO.

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

38

� SEPARAR CANALES DE UN ARCHIVO ESTEREO.

Importante: las muestras, en el chunk data, alternan los canales.

Page 39: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� ¿Qué podemos hacer con las muestras?

� JUNTAR DOS ARCHIVOS MONO EN UNO ESTÉREO

Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV Estructura Interna de un WAV

39

ESTÉREO

Las cabeceras deben ser iguales: misma frecuencia de muestreo, mismos bits por muestra, etc.

Page 40: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� La función PlaySound()

BOOL PlaySound(

LPCSTR pszSound,

API de bajo nivelAPI de bajo nivelAPI de bajo nivelAPI de bajo nivel

40

LPCSTR pszSound,HMODULE hmod,DWORD fdwSound);

Page 41: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� La función PlaySound()

Permite especificar un sonido de tres formas:

API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel

41

� Nombre de archivo

� Alarma del sistema

� Identificador de recurso

Page 42: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� La función PlaySound()

Cosas que se pueden definir con los “FLAGS”:

Escuchar el sonido en un bucle continuo.

API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel

42

� Escuchar el sonido en un bucle continuo. � Escuchar el sonido síncrona o asíncronamente.

Page 43: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel � La función PlaySound()

Ejemplos de uso:

PlaySound("C:\\SOUNDS\\BELLS.WAV", NULL, SND_SYNC);

43

PlaySound("C:\\SOUNDS\\BELLS.WAV", NULL, SND_SYNC); PlaySound("C:\\SOUNDS\\BELLS.WAV", NULL, SND_SYNC |

SND_NODEFAULT);PlaySound("C:\\SOUNDS\\BELLS.WAV", NULL, SND_LOOP |

SND_ASYNC); PlaySound(NULL, NULL, 0); PlaySound("MouseClick", NULL, SND_SYNC);

Page 44: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

�Dispositivos:

waveInGetNumDevs()

waveOutGetNumDevs()

API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel

44

waveOutGetNumDevs()

waveInGetDevCaps() (WAVEINCAPS)

waveOutGetDevCaps() (WAVEOUTCAPS)

waveInOpen()

waveOutOpen()

Page 45: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� Reproducción:

MessageBeep()

waveOutGetPosition()

API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel

45

waveOutPause()

waveOutReset()

waveOutRestart()

waveOutPause()

waveOutWrite()

waveOutGetVolume()

waveOutSetVolume()

Page 46: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel

�Grabación:

waveInAddBuffer()

46

waveInStart()

waveInReset()

waveInStop()

waveInClose()

Page 47: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel

�Bloques de datos:

waveInPrepareHeader()

47

waveInUnprepareHeader()

waveOutPrepareHeader()

waveOutUnprepareHeader()

Page 48: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel

�Bloques de datos:typedef struct { LPSTR lpData; DWORD dwBufferLength; DWORD dwBytesRecorded;

48

DWORD dwBytesRecorded; DWORD dwUser; DWORD dwFlags; DWORD dwLoops; struct wavehdr_tag * lpNext; DWORD reserved;

} WAVEHDR;

Page 49: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

API de bajo nivel API de bajo nivel API de bajo nivel API de bajo nivel

�Ejemplo:

49

Page 50: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

MCI

MCISENDCOMMAND

MCISENDSTRING

50

Necesitan importar la librería mmsystem.h ( #include <mmsystem.h>)

Page 51: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

MCI

MCIERROR mciSendString(

LPCTSTR lpszCommand,

LPTSTR lpszReturnString,

51

LPTSTR lpszReturnString,

UINT cchReturn,

HANDLE hwndCallback

);

Page 52: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

� lpszCommand � Dirección de una cadena que contiene el comando.

� lpszReturnString � Dirección de un buffer para recibir

MCI

52

� lpszReturnString � Dirección de un buffer para recibir información de retorno.

� cchReturn � Tamaño del buffer del campo anterior.

� hwndCallback � Puntero a una ventana (si el flag “notify” aparecía en el comando)

Page 53: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

MCI

�Comando= Comando MCI + Id. de Dispositivo + Argumentos

�Comando MCI: open, play...

53

�Comando MCI: open, play...

�Identificador de dispositivo: Se crea cuando el dispositivo se abre.

�Argumentos: Especifican los flags y variables que usa el comando.

Page 54: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

MCI

mciSendString(“play c:\\windows\\media\\ctmelody.wav

EJEMPLO 1: MCISENDSTRING

54

mciSendString(“play c:\\windows\\media\\ctmelody.wav from 0 to 1000”, NULL, 0, NULL);

Page 55: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

MCI

EJEMPLO 2: MCISENDSTRING

mciSendString ("open cdaudio", NULL, 0, 0L);mciSendString ("play cdaudio", NULL, 0, 0L);

55

mciSendString ("play cdaudio", NULL, 0, 0L);}

Page 56: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

MCI

�MCIERROR mciSendCommand(

� MCIDEVICEID IDDevice,

56

� MCIDEVICEID IDDevice,

� UINT uMsg,

� DWORD fdwCommand,

� DWORD dwParam

� );

Page 57: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

MCI � IDDevice � Identificador del dispositivo MCI. (Este

parámetro no se utiliza con el comando MCI_OPEN)

� uMsg � Comando

57

� uMsg � Comando

� fdwCommand � Flags que afectan al comando

� dwParam � Dirección de una estructura que contiene parámetros para el comando

Page 58: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

MCI �Algunas estructuras:

typedef struct {

DWORD dwCallback;

DWORD dwFrom;

DWORD dwTo;

58

DWORD dwTo;

} MCI_PLAY_PARMS;

typedef struct {

DWORD dwCallback;

MCIDEVICEID wDeviceID;

LPCSTR lpstrDeviceType;

LPCSTR lpstrElementName;

LPCSTR lpstrAlias;

} MCI_OPEN_PARMS;

Page 59: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

MCI

EJEMPLO 3: MCISENDCOMMAND

MCI_OPEN_PARMS mciOpenParms;MCI_PLAY_PARMS mciPlayParms;

59

MCI_PLAY_PARMS mciPlayParms;MCIDEVICEID DeviceID;

mciOpenParms.lpstrDeviceType = "waveaudio";mciOpenParms.lpstrElementName=c:\\windows\\media\\ctmelody.wav";mciSendCommand(0, MCI_OPEN,MCI_OPEN_TYPE

|MCI_OPEN_ELEMENT, (DWORD)(LPVOID) &mciOpenParms);

Page 60: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

MCI

EJEMPLO 3: MCISENDCOMMAND

DeviceID = mciOpenParms.wDeviceID;

60

mciPlayParms.dwFrom=0;mciPlayParms.dwTo=1000;

mciSendCommand(DeviceID, MCI_PLAY ,0, (DWORD)(LPVOID) &mciPlayParms);

}

Page 61: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

MCI

EJEMPLO 4: MCISENDCOMMAND

MCI_OPEN_PARMS Parametros;Parametros.lpstrDeviceType = (LPSTR)MCI_DEVTYPE_CD_AUDIO;

61

Parametros.lpstrDeviceType = (LPSTR)MCI_DEVTYPE_CD_AUDIO;

mciSendCommand (NULL, MCI_OPEN, MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID, (DWORD) (LPVOID) & Parametros);

mciSendCommand (Parametros.wDeviceID,MCI_PLAY,0,NULL);

Page 62: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

MCI

BOOL mciGetErrorString(

DWORD fdwError,

62

DWORD fdwError,

LPTSTR lpszErrorText,

UINT cchErrorText

);

Page 63: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

MCI

� dwError � Código de error devuelto por mciSendCommand o mciSendString

� lpszErrorText � Dirección de un buffer que contiene

63

� lpszErrorText � Dirección de un buffer que contiene una cadena que describe el error especificado

� cchErrorText � Longitud del buffer del parámetro anterior

Page 64: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

MCI � El FLAG “WAIT”:

� Devuelve el control cuando la acción ha terminado

� El FLAG “NOTIFY”:

64

El FLAG “NOTIFY”:

� Manda al dispositivo que lance un mensaje cuando termine

� EL FLAG “TEST”

� Pregunta al dispositivo si está preparado.

Page 65: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

MCI � COMANDOS PARA ARCHIVOS DE ONDA:

1) DE SISTEMA: 2) OBLIGATORIOS

break capability

65

break capability

sysinfo close

info

open

status

Page 66: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

MCI � COMANDOS PARA ARCHIVOS DE ONDA:

3) BÁSICOS:

load resume

66

load resume

pause save

play seek

record set

stop

Page 67: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

Programación Multimedia Archivos de Onda

MCI � COMANDOS PARA ARCHIVOS DE ONDA:

4) EXTENDIDOS:

configure setvideo

67

configure setvideo

cue signal

delete spin

put update

setaudio where

window

Page 68: Archivos de Onda.ppt [Modo de compatibilidad]tamarisco.datsi.fi.upm.es/ASIGNATURAS/PRO-MUL/... · Qué es un archivo de onda 3 una señal sonora. Muestreo: Criterio de Nyquist

PROGRAMACIÓN MULTIMEDIA

ARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDAARCHIVOS DE ONDA

(.WAV)(.WAV)(.WAV)(.WAV)