Transparencias (1 pág., 1.1MB).

Transcripción

Transparencias (1 pág., 1.1MB).
Tema 3
Audio
Manuel Agustí, José V. Benlloch
DISCA-UPV (2002-2010)
Objetivos
Relacionar los fundamentos físicos del sonido y de la
percepción humana del audio
Conocer y comprender los fundamentos del estándar
MIDI
Conocer y comprender los fundamentos del estándar
MPEG Audio Layer-3
Conocer las herramientas Sw básicas para trabajar con
señales de audio: edición y procesado
Índice
Introducción. Sonido
Modelado del sonido y percepción: acústica
Música y multimedia: el MIDI
MPEG Audio Layer-3
Herramientas Sw
Sonido
Vibración
de un punto
de un cuerpo:
Frecuencia Fundamental
Sonido
Características de las señales sonoras:
Intensidad (sonoridad, loudness)
Frecuencia (tono, pitch) ...
Timbre (frec. fundamental y armónicos)
Sonido
Sonido
Intensidad + timbre + frecuencia
Graves vs agudos.
20 Hz .. 20k Khz:: [infrasonidos .. ultrasonidos].
Dominio del tiempo vs dominio de la frecuencia
Índice
Introducción. Sonido
Modelado del sonido y percepción: acústica
Música y multimedia: el MIDI
MPEG Audio Layer-3
Herramientas Sw
Modelado y percepción
Modelado del sonido en frecuencia
Cuando suenan dos tonos a la vez, de la misma
intensidad y fase
Modelado y percepción
Modelado del sonido en frecuencia
Cuando suenan dos tonos a la vez, no de la misma
intensidad
Modelado y percepción
Sonido complejo
Suma de sonidos (tonos) básicos
Modelado y percepción
Modelado del sonido en frecuencia:
Herramienta: transformada de Fourier
Frecuencia fundamental y armónicos
Modelado y percepción
Modelado del sonido en frecuencia
XMMS: visualizar el espectro de frecuencias
Generador de tonos,
Radio, ...,
intensidad
Ecualizador
tiempo
f
frecuencia
Modelado y percepción
Modelado del sonido en frecuencia
XMMS: visualizar el espectro de frecuencias
...
Ecualizador
Por defecto sólo MP3
EQU Graphical Equalizer XMMS Effect Plugin
<http://equ.sourceforge.net>
Acústica
Cómo suena ...
¿Un árbol que cae en medio del bosque y no hay
nadie allí para oírlo?
¿Una sirena al pasar?
Estudio del sonido y la percepción: audio
El fenómeno físico
... y el sistema de percepción humano interpreta
Psicoacústica
Oído humano
Acústica (2)
Y el sistema de percepción interpreta:
20 .. 20k Hz,
edad,
volumen.
bel ® decibel Þ 0dB
Escala logarítimica:
20 dB .. 135 dB
Dirección del sonido
Percepción: Psicoacústica
El habla es una forma de onda compleja
* Las vocales y los sonidos graves son bajas frec.
* Las consonantes son altas frecuencias
El ser humano es más sensible a las bajas
frecuencias
*La región más importante es 2 kHz a 4 kHz
La percepción depende también de las condiciones
ambientales
Algunos sonidos son enmascarados por otros
cercanos en frecuencias (MPEG).
Respuesta del oído humano
·2 .. 4 kHz
·20 . .20k Hz
Pérdida auditiva con la edad
Singularidades en la percepción
Una misma nota (frecuencia) a diferentes
niveles de intensidad oir diferentes frecs.
Cuando dos notas (f1, f2) suenan juntas, el
oído es capaz de apreciar la diferencia
Entrenamiento: ® captar la suma (f1 + f2)
A bajas frecs.: ® se oye tono intermedio (f1+f2)/2
Al aumentar la intensidad de una señal
aparecen nuevos armónicos
Efectos sobre el audio
Recreación de efectos reales
Síntesis
Doppler
Audio 3D
FM, tabla de ondas, modelado, aditiva, sustractiva,
modular, ...
Básicos
Retraso (delay), coros (chorus) y reverberación (reverb) y
ecualizar.
Modulación de señal (envolvente) y filtros.
Efecto Doppler
Fenómeno físico y recreación
Audio 3D
Fenómeno físico y recreación
Síntesis de audio
Sintetizadores Software
Síntesis aditiva,
sustractiva, modular,
granular, ...
Efectos de audio
Ecualizador:
¿Dominio del tiempo o de la frecuencia?
Esquemas de <http://www.harmony-central.com/Effects>
Efectos de audio
Retraso (delay):
Efectos de audio
Coros (chorus):
Efectos de audio
Reverberación:
Índice
Introducción. Sonido
Modelado del sonido y percepción: acústica
Música y multimedia: el MIDI
MPEG Audio Layer-3
Herramientas Sw
El estándar MIDI
Musical Instrument Digital Interface (1983)
Protocolo diseñado para la grabación y
reproducción de música en sintetizadores digitales.
Multiplataforma:
independiente de
dispositivo
y
resolución
El estándar MIDI (2)
Componentes Hard. y Soft.:
Transmisión serie asíncrona; tramas de 10 bits; 31.25
Kbs; unidireccional. DIN-5
Instrucciones que indican a un dispositivo
qué sonidos debe generar (@ partitura y músicos).
¿Unicamente sonido?
Nota, volumen, instrumento, fuerza (velocidad), ...
El estándar MIDI (y 3 ): descripción
Descripción:
General MIDI (GM)
Estándar para el esquema de numeración de los
programas MIDI (sonidos que es capaz de generar un
sintetizador): 1-128
General Standard (GS)
Roland: GM + variaciones sonidos + efectos
Standard MIDI File,
Sample Dump Standard,
MIDI Show Control
(iluminación, proyectores, fuegos artificiales, telones, plataformas, etc)
Dispositivos MIDI: Sintetizadores
Controllers & sound modules
MIDI In, Out y Thru
Características ...
Dispositivos MIDI: Sintetizadores
Características
Sensibilidad,
Polifonía,
Multitímbrico
Modo de recepción y
keyboard spliting
Programables: combinar sonidos (instrumentos),
filtros, modificar sonidos (amplitud, frecuencia y
timbre)
Otros dispositivos MIDI
Samplers
Dispositivos que permiten ...
utilizando órdenes MIDI.
Guitar & Wind Controllers
MIDI Drum machines
Tambor MIDI
(Pere Pascual)
Ride cymbal | Toms | Bass drum | Snare | Hi-hat | Crash
Índice
Introducción. Sonido
Modelado del sonido y percepción: acústica
Música y multimedia: el MIDI
MPEG Audio Layer-3
Herramientas Sw
MPEG Audio Layer-3
Historia
1987: Fraunhofer Institute
for Integrated Circuits,
Applied Electronics Center, IIS-A
IIS ® ISO-MPEG Audio Layer-3
IS 11172-3 y IS 13818-3
Sin reducir la cantidad de información:
1 seg. estéreo con calidad CD: 16 bits y 44.1 kHz
® 1400 Mbit Þ MP3 (factor 12)
Bases de la teoría de la codificación de la
Percepción del sonido
MPEG: The big picture
ISO & IEC ® 1988
Moving Picture Experts Group
steps
MPEG-1 “Coding of Moving Pictures and Associated
Audio for Digital Storage Media at up to 1.5 Mbit/s”
MPEG-2 “Generic Coding of Moving Pictures and
Associated Audio Information” (MPEG-3, HDTV)
MPEG-4 “Coding of Audio-Visual Objects”
MPEG: The big picture (y 2)
MPEG-1 (1992, ISO 11172):
partes
- IS-11172-1 System
- IS-11172-1 Video
- IS-11172-1 Audio
- IS-11172-1 Compliance Testing
- DTR-11172-1 Software Simulation
codecs
Layer-1: Digital Compact Cassette 384 Kb/s señal estéreo
Layer-2: 256..192 Kb/s
Layer-3 ® “.mp3”
128..112 kbps
Modelo psicoacústico
MPEG Audio
MPEG - 1 Audio (1992)
Vídeo y Audio en CD-ROM 1x
Audio: mono, estéreo
MPEG-2 Audio
Sonido Multicanal: 5.1
No es compatible hacia atrás
Frecs. muestreo: 32, 44.1, 48 kHz.
1-48 canales;
8..96k Hz frec. muestreo; ratios de 8..160 kbits/s
MPEG-4 Audio
Integra codificación natural y sintética
Localización espacial (3D)
Ratios estándares de 2..64 kbits/s
La curva de sensibilidad del oído
El fenómeno de enmascaramiento
Escala perceptual BARK
MPEG Audio Layer-3
MPEG Layer-3
Codificación perceptual de audio y
compresión psicoacústica para eliminar la
información superflua (las partes
redundantes e irrelevantes de la señal de
sonido).
MDCT (Modified Discrete Cosine Transform)
La alternativa libre
Xiph.Org Foundations
Formato de fichero
is a patent-free, fully open multimedia bitstream container format designed
for efficient streaming and file compression (storage).
CODEC
Ogg
Vorbis: open and free audio compression project
Índice
Introducción. Sonido
Modelado del sonido y percepción: acústica
Música y multimedia: el MIDI
MPEG Audio Layer-3
Herramientas Sw
Herramientas software
Plugin de audio
para el XMMS
www.xmms.org
Ejemplo (bibliografía de IMD)
typedef struct _VisPlugin {
typedef struct _VisPlugin {
void *handle;
void *handle;
char *filename;
char *filename;
int xmms_session;
int xmms_session;
char *description;
char *description;
int num_pcm_chs_wanted;
int num_pcm_chs_wanted;
int num_freq_chs_wanted;
int num_freq_chs_wanted;
void (*init)(void);
void (*init)(void);
void (*cleanup)(void);
void (*cleanup)(void);
void (*about)(void);
void (*about)(void);
void (*configure)(void);
void (*configure)(void);
void (*disable_plugin)(struct _VisPlugin *);
void (*disable_plugin)(struct _VisPlugin *);
void (*playback_start)(void);
void (*playback_start)(void);
void (*playback_stop)(void);
void (*playback_stop)(void);
void (*render_pcm)(gint16 pcm_data[2][512]);
void (*render_pcm)(gint16 pcm_data[2][512]);
void (*render_freq)(gint16 freq_data[2][256]);
void (*render_freq)(gint16 freq_data[2][256]);
} VisPlugin;
} VisPlugin;
Herramientas software
API: Open Audio Library
Interfaz de programación multiplataforma para
audio multicanal 3D
Objetos:
Los buffers: audio en formato PCM
Una fuente (source): datos de audio en una posición
espacial
8 ó 16bits, 1 ó 2 canales.
La velocidad, posición y dirección e intensidad del sonido.
El oyente (listener): donde "proyectar" la "escena”
La velocidad, posición y dirección del mismo, así como la
ganancia asociada a todos los sonidos.
Aunque se pueden definir varios oyentes sólo uno puede estar
activo.
Herramientas software
OpenAL
Motor de rendering de audio en 3D
Otros objetos:
Contexto (context)
Oyente + fuente/s
Modela la propagación del audio: define una “escena”
Dispositivo (device)
Abstracción: hardware y manejador
Herramientas software
API: Open Audio Library
Niveles (1)
Relativas a los buffers
•alGenBuffers
•alDeleteBuffers
•alIsBuffer
•alBufferf
•alBuffer3f
•alBufferfv
•alBufferi
•alBuffer3i
•alBufferiv
•alGetBufferf
•alGetBuffer3f
•alGetBufferfv
•alGetBufferi
•alGetBuffer3i
•alGetBufferiv
Audio Library (AL)
Relativas a las fuentes
•alGenSources
•alDeleteSources
•alIsSource
•alSourcef
•alSource3f
•alSourcefv
•alSourcei
•alSource3i
•alSourceiv
•alGetSourcef
•alGetSource3f
•alGetSourcefv
•alGetSourcei
•alGetSource3i
•alGetSourceiv
•alSourcePlayv
•alSourceStopv
•alSourceRewindv
•alSourcePausev
•alSourcePlay
•alSourceStop
•alSourceRewind
•alSourcePause
•alSourceQueueBuffers
•alSourceUnqueueBuffers
Relativas al oyente
•alListenerf
•alListener3f
•alListenerfv
•alListeneri
•alListener3i
•alListeneriv
•alGetListenerf
•alGetListener3f
•alGetListenerfv
•alGetListeneri
•alGetListener3i
•alGetListeneriv
Relativas a propiedades y estados
•alEnable
•alDisable
•alIsEnabled
•alGetString
•alGetBooleanv
•alGetIntegerv
•alGetFloatv
•alGetDoublev
•alGetBoolean
•alGetInteger
•alGetFloat
•alGetDouble
•alDopplerFactor
•alDopplerVelocity
•alSpeedOfSound
•AlDistanceModel
Relativas a gestión de errores
•AlGetError
Relativas a las extensiones
•alIsExtensionPresent
•alGetProcAddress
•alGetEnumValue
Herramientas software
API: Open Audio Library
Niveles (2)
AL Context (ALC)
alcCreateContext
alcMakeContextCurrent
alcProcessContext
alcSuspendContext
alcDestroyContext
alcGetCurrentContext
alcGetContextsDevice
alcOpenDevice
alcCloseDevice
alcGetError
alcIsExtensionPresent
alcGetProcAddress
alcGetEnumValue
alcGetString
alcGetIntegerv
alcCaptureOpenDevice
alcCaptureCloseDevice
alcCaptureStart
alcCaptureStop
alcCaptureSamples
Herramientas software
API: Open Audio Library
Niveles (y 3)
The Open AL Utility Toolkit (ALUT)
Error Handling
alutGetError
alutGetErrorStringInitialization / Exit
alutInit
alutInitWithoutContext
alutExitp
Sound Sample File Loading
alutCreateBufferFromFile
alutCreateBufferFromFileImage
alutCreateBufferHelloWorld
alutCreateBufferWaveform
alutLoadMemoryFromFile
alutLoadMemoryFromFileImage
alutLoadMemoryHelloWorld
alutLoadMemoryWaveform
alutGetMIMETypes
Version Checking
alutGetMajorVersion
alutGetMinorVersion
Sleeping
AlutSleep
Herramientas software
Un primer ejemplo de código
#include
<AL/alut.h>
#include <AL/alut.h>
int main (int argc, char **argv)
int main (int argc, char **argv)
{
{
ALuint elBuffer, laFuente;
ALuint elBuffer, laFuente;
alutInit (&argc, argv);
alutInit (&argc, argv);
elBuffer = alutCreateBufferHelloWorld ();
elBuffer = alutCreateBufferHelloWorld ();
alGenSources (1, &laFuente);
alGenSources (1, &laFuente);
alSourcei (laFuente, AL_BUFFER, elBuffer);
alSourcei (laFuente, AL_BUFFER, elBuffer);
alSourcePlay (laFuente);
alSourcePlay (laFuente);
AlutSleep (1);
AlutSleep (1);
}
alDeleteSources(1, &elBuffer);
alDeleteSources(1, &elBuffer);
alDeleteBuffers(1, &laFuente);
alDeleteBuffers(1, &laFuente);
alutExit ();
alutExit ();
return EXIT_SUCCESS;
return EXIT_SUCCESS;
Herramientas software
Generando sonidos simples
...
...
ALuint elBuffer, laFuente;
ALuint elBuffer, laFuente;
// ALuint alutCreateBufferWaveform (ALenum waveshape,
// ALuint alutCreateBufferWaveform (ALenum waveshape,
//
ALfloat phase,
//
ALfloat phase,
ALfloat frequency,
ALfloat frequency,
ALfloat duration);
ALfloat duration);
elBuffer = alutCreateBufferWaveform(ALUT_WAVEFORM_SINE, 440.0, 0.0, 1.0);
elBuffer = alutCreateBufferWaveform(ALUT_WAVEFORM_SINE, 440.0, 0.0, 1.0);
// ALUT_WAVEFORM_SQUARE, ALUT_WAVEFORM_SAWTOOTH,
// ALUT_WAVEFORM_SQUARE, ALUT_WAVEFORM_SAWTOOTH,
// ALUT_WAVEFORM_WHITENOISE, ALUT_WAVEFORM_IMPULSE
// ALUT_WAVEFORM_WHITENOISE, ALUT_WAVEFORM_IMPULSE
...
...
alGenSources (1, &laFuente);
alGenSources (1, &laFuente);
alSourcei (laFuente, AL_BUFFER, elBuffer);
alSourcei (laFuente, AL_BUFFER, elBuffer);
alSourcePlay (laFuente);
alSourcePlay (laFuente);
alutSleep (1);
alutSleep (1);
alDeleteSources(1, &elBuffer);
alDeleteSources(1, &elBuffer);
alDeleteBuffers(1, &laFuente);
alDeleteBuffers(1, &laFuente);
alutExit ();
alutExit ();
return EXIT_SUCCESS;
return EXIT_SUCCESS;
}
}
Herramientas software
Trabajando con ficheros
#include
<AL/alut.h>
#include <AL/alut.h>
int main (int argc, char **argv)
int main (int argc, char **argv)
{
{
ALuint elBuffer, laFuente;
ALuint elBuffer, laFuente;
ALint sourceState;
ALint sourceState;
alutInit (&argc, argv);
alutInit (&argc, argv);
helloBuffer = alutCreateBufferFromFile( argv[1] );
helloBuffer = alutCreateBufferFromFile( argv[1] );
alGenSources (1, &laFuente);
alGenSources (1, &laFuente);
alSourcei(laFuente, AL_BUFFER, elBuffer);
alSourcei(laFuente, AL_BUFFER, elBuffer);
alSourcePlay (laFuente);
alSourcePlay (laFuente);
// Lo vamos a dejar sonar mientras hayan datos.
// Lo vamos a dejar sonar mientras hayan datos.
alGetSourcei( laFuente, AL_SOURCE_STATE, &sourceState);
alGetSourcei( laFuente, AL_SOURCE_STATE, &sourceState);
while (sourceState == AL_PLAYING)
while (sourceState == AL_PLAYING)
alGetSourcei( laFuente, AL_SOURCE_STATE, &sourceState);
alGetSourcei( laFuente, AL_SOURCE_STATE, &sourceState);
}
alutExit ();
alutExit ();
return EXIT_SUCCESS;
return EXIT_SUCCESS;
Herramientas software
Audio espacial (posicional)
Oyente
ALfloat listenerPos[]={0.0,0.0,4.0};
ALfloat listenerPos[]={0.0,0.0,4.0};
ALfloat listenerVel[]={0.0,0.0,0.0};
ALfloat listenerVel[]={0.0,0.0,0.0};
Alfloat listenerOri[]={0.0,0.0,1.0, 0.0,1.0,0.0};
Alfloat listenerOri[]={0.0,0.0,1.0, 0.0,1.0,0.0};
...
...
alListenerfv(AL_POSITION,listenerPos);
alListenerfv(AL_POSITION,listenerPos);
alListenerfv(AL_VELOCITY,listenerVel);
alListenerfv(AL_VELOCITY,listenerVel);
alListenerfv(AL_ORIENTATION,listenerOri);
alListenerfv(AL_ORIENTATION,listenerOri);
La/s fuente/s de sonido
#define NUM_BUFFERS 3
#define NUM_BUFFERS 3
Aluint buffer[NUM_BUFFERS];
Aluint buffer[NUM_BUFFERS];
ALfloat source0Pos[]={ -2.0, 0.0, 0.0};
ALfloat source0Pos[]={ -2.0, 0.0, 0.0};
ALfloat source0Vel[]={ 0.0, 0.0, 0.0};
ALfloat source0Vel[]={ 0.0, 0.0, 0.0};
...
...
alSourcefv(source[0], AL_POSITION, source0Pos);
alSourcefv(source[0], AL_POSITION, source0Pos);
alSourcefv(source[0], AL_VELOCITY, source0Vel);
alSourcefv(source[0], AL_VELOCITY, source0Vel);
Herramientas software
Glame
Editor de ondas
Editor de filtros: por bloques
Bibliografía y enlaces
The Tapeless Studio: online magazine of audio
recording on the PC.
Short MPEG-2 Description
(drogo.cselt.stet.it/ufv/leonardo/mpeg/standards/mpeg2/mpeg-2.htm)
Frecuently Askef Questions about MPEG
Audio Layer-3
(www.iis.fhg.de/amm/techinf/layer3faq/index.html)
MPEG Audio FAQ’s Version 8
(drogo.cselt.stet.it/ufv/leonardo/mpeg/faq/faq-audio.htm)
MPEG Audio Web Page
(www.tnt.uni-hannover.de/project/mpeg/audio)
Bibliografía y enlaces
Introducción a la Codificación de Audio
Digital (MPEG y DOLBY AC-3)
Francisco García López
(www.timagazine.net; Diciembre 1997)
Grupos de noticias
rec.music.makers
rec.audio.pro
alt.music.midi
alt.binaries.sounds.midi
comp.music.midi
OpenAL < http://connect.creativelabs.com/openal/ >

Documentos relacionados