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 FAQs 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/ >