Direct sound
Download
1 / 39

Direct Sound - PowerPoint PPT Presentation


  • 65 Views
  • Uploaded on

Direct Sound. Componente de sonido de la API para aplicaciones multimediales de Microsoft: DirectX. La Física del sonido.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Direct Sound' - ayanna-sweet


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Direct sound

Direct Sound

Componente de sonido de la API para aplicaciones multimediales de Microsoft: DirectX.


La f sica del sonido
La Física del sonido

  • El sonido es generado por ondas de energía liberadas de objetos que chocan entre si. Luego estas ondas de energía producen cambios de presión, lo que al final es captado por los tímpanos.


La f sica del sonido1
La Física del sonido

  • La forma en que las tarjetas de sonido producen sonido en forma de ondas de sonido, luego los cambios de voltaje amplificado, el que es recibido por parlantes que vibran, estas vibraciones, producen cambios en la presión del aire y son consideradas sonidos.


Sonido en computadores
Sonido en Computadores.

  • Al principio de la era computacional, los primeros computadores no fueron pensados para ser equipos multimediales, sino simples calculadoras.

  • Por ello solo se contaba con los “beeps” para avisar mensajes.


Sonido en computadores1
Sonido en Computadores.

  • En los 70 aparecen las primeras tarjetas de Sonido que usaban FM.

  • Los primeros Mac ya manejaban sonido.

  • En DOS de Microsoft, se podía contar con sonido, gracias a que existían ya a esas alturas T de Sonido. Pero para ello se necesitaba que el juego o aplicación misma se hiciera cargo de hacer funcionar la tarjeta de sonido.


Direct x directsound
Direct X & DirectSound

  • En 1995 aparece DirectX, con la idea de ser una API, con la cual, los programadores de video juegos se olvidarían del hardware que el usuario este utilizando, dejando la responsabilidad al SO.

  • Parte de DirectX 1, es DirectSound, que en ese tiempo solo ofrecía efectos básicos de paneo izquierdo y derecho.


Direct x directsound1
Direct X & DirectSound

  • DirectSound 3 introdujo en concepto de Directsound3d (DS3D), que ofrecía comandos para ubicar sonidos en un espacio 3D.

  • Fue hasta DS5 que estas librerías pudieron ser aceleradas por componentes alternativos, lo que redujo sustancialmente el consumo de CPU.


Directsound hoy
DirectSound hoy

  • Lo que hoy nos ofrece DirectSound:

  • Tocar archivos o recursos en formato WAV.

  • Tocar varios sonidos de manera simultanea.

  • Asignar alta prioridad a los sonidos.

  • Localizar sonidos en ambientes 3-D.

  • Agregar efectos como Ecos y Coros, y cambiar los parámetros de estos de manera dinámica.

  • Capturar sonidos en formato WAV desde un micrófono u otros dispositivos.


Api inside
Api inside.

  • La Api de DirectSound, está formado por objetos COM de Microsoft.

  • Todo objeto DirectSound, DS, debe estar asociado a lo que llamaremos buffer primario. Sobre este buffer no tenemos permisos ni de escritura ni de lectura en Windows NT / Windows 2000. En este buffer se almacena la mezcla de sonidos que se le entregará a la tarjeta de sonido.


Directsound en vxd
DirectSound en VxD.

  • Bajo el modelo de drivers virtuales, VxD, las mezclas de los buffers son hechas en Dsound.vxd. Esto implica que es posible acceder al buffer primario de manera directa. En este caso, se accede al buffer del DMA que usa la T de sonido. Es posible setear propiedades del buffer de esta manera, incluso cambiar las propiedades del mismo hardware.


Windows driver model wdm
Windows Driver Model (WDM)

  • No hay acceso al buffer primario, DS manda los datos al mezclador del kernel.

  • El mezclador del kernel se encarga de convertir los formatos de audio que recibe en uno común. Mezclar y enviar a la T De Sonido.

  • Es capaz de mezclar WaveOut con DS.


Buffers de sonido
Buffers de sonido.

  • Para mezclar un conjunto de sonidos, se usan buffers secundarios. Luego se mezclan y se reproducen en el buffer primario de manera simultanea.

  • Para escribir sobre un buffer secundario, primero debemos hacer un lock, a un trozo de ese buffer. Escribir lo que deseemos en esos bytes y desbloquearlo, con unlock. DS te permite bloquear un trozo mientras se está reproduciendo otro, siempre con cierta seguridad para evitar mezclas no deseadas.


Buffers de sonido1
Buffers de sonido.

  • Cada aplicación debe crear al menos un buffer secundario, para almacenar y tocar los sonidos.

  • Un buffer secundario puede ser destruido en cualquier momento, puede ser estático y que almacene un sonido simple, o también puede tocar los sonidos de forma streaming, en caso de que el consumo de memoria fuese mayor.

  • Los buffers secundarios se mezclan simplemente al tocar los sonidos al mismo tiempo, cualquiera sea el número, sólo dependerá del poder de procesamiento.


Caracter sticas de los buffers
Características de los buffers.

  • Formato : el formato de cada buffer debe ser el mismo que el del wav que se tocará.

  • Controls. Volumen, frecuencia, y movimiento 3d son algunos de los controles para cada buffer.

  • Location. Un buffer puede estar en memoria manejado por hardware, o en memoria manejado por software.


Programaci n del api directsound
Programación del API DirectSound

  • Lo primero de todo, debemos crear un objeto DirectSound, llamando a la siguiente función:

    HRESULT WINAPI DirectSoundCreate(

    LPGUID lpGuid,

    LPDIRECTSOUND *ppDS,

    LPUNKNOWN pUnkOuter );


Programaci n del api directsound1
Programación del API DirectSound

  • El primer y tercer parámetro debe estar a 0, y el segundo es un puntero a un objeto DirectSound, creado tras la llamada a esta función. El código sería como sigue:

    LPDIRECTSOUND pDS;

    HRESULT hRes = :: DirectSoundCreate(0, &pDS,0);

    If (hRes == DS_OK) {

    ...


Programaci n del api directsound2
Programación del API DirectSound

  • Tras ello, debemos de establecer al objeto DS lo que la librería llama el cooperative level. Básicamente, eso consiste en asociar el objeto a una ventana de la aplicación, indicando la prioridad que tiene respecto al resto de aplicaciones ejecutándose.

  • Se realiza mediante el método del objeto COM DS:

    HRESULT SetCooperativeLevel

    ( HWND hwnd,

    DWORD dwLevel

    );


Tras ello, creamos el buffer secundario y establecemos su formato interno, número de canales, frecuencia...

Se realiza mediante el siguiente código:

DSBUFFERDESC bufferDesc;

memset(&bufferDesc, 0, sizeof(DSBUFFERDESC));

bufferDesc.dwSize = sizeof(DSBUFFERDESC);

bufferDesc.dwFlags = DSBCAPS_PRIMARYBUFFER

|DSBCAPS_STICKYFOCUS;

bufferDesc.dwBufferBytes = 0;

bufferDesc.lpwfxFormat = NULL;

hRes = pDS->CreateSoundBuffer (&bufferDesc,&primaryBuffer, NULL);


if (hRes == DS_OK) formato interno, número de canales, frecuencia...

{

// Establecemos el formato, 48kz, 16bits, stereo

WAVEFORMATEX format;

memset(&format, 0, sizeof(WAVEFORMATEX));

format.wFormatTag = WAVE_FORMAT_PCM;

format.nChannels = 2; // stereo

format.nSamplesPerSec = F_MUEST;

format.nAvgBytesPerSec = 4 * F_MUEST ;

format.nBlockAlign = 4;

format.wBitsPerSample = 16;

format.cbSize = 0;

hRes = primaryBuffer->SetFormat(&format);


Programaci n del api directsound3

HRESULT Lock formato interno, número de canales, frecuencia...

(

DWORD dwWriteCursor,

DWORD dwWriteBytes,

LPVOID lplpvAudioPtr1,

LPDWORD lpdwAudioBytes1,

LPVOID lplpvAudioPtr2,

LPDWORD lpdwAudioBytes2,

DWORD dwFlags

);

El primer parámetro indica a partir de que posición se desea bloquear.

El segundo, el número de bytes que se quieren tomar.

El tercero y el quinto son punteros a void, que se rellenarán con las direcciones donde escribir.

El cuarto y sexto parámetro devuelven las longitudes en bytes de sus respectivos trozos de memoria.

El último parámetros es un conjunto de flags entre los que señalo DSBLOCK_ENTIREBUFFER, para bloquear el buffer completo

Programación del API DirectSound


Programaci n del api directsound4
Programación del API DirectSound formato interno, número de canales, frecuencia...

  • Después de esto, se debe escribir en las posiciones indicadas por los punteros. Y al terminar, desbloquear el buffer mediante la siguiente llamada:

    HRESULT Unlock(

    LPVOID lpvAudioPtr1,

    DWORD dwAudioBytes1,

    LPVOID lpvAudioPtr2,

    DWORD dwAudioBytes2

    );


Programaci n del api directsound5
Programación del API DirectSound formato interno, número de canales, frecuencia...

  • Cuando se quiera reproducir un buffer secundario, se indica mediante la llamada Play.

    HRESULT Play

    (

    DWORD dwReserved1,

    DWORD dwReserved2,

    DWORD dwFlags

    );


Programaci n del api directsound6
Programación del API DirectSound formato interno, número de canales, frecuencia...

  • Los 2 primeros parámetros son 0, y el tercero, se le puede agregar un flag de looping.

  • Al hacer play, el contenido de este buffer secundario es mezclado por la libreria en el buffer primario, asi, si habian sonidos ya en el buffer primario, estos son reproducidos simultanemamente.


Manejo de sonido 3d
Manejo de sonido 3D formato interno, número de canales, frecuencia...

  • Cordenadas usadas son las cartesianas, eje x de izq a der, eje y de arriba abajo, y eje z, lejos a cerca.

  • Para la posicion se usan metros.

  • Velocidad se mide por unidades en cada eje por segundo, es decir m/s.


Sonido 3d percepci n de posici n
Sonido 3D: formato interno, número de canales, frecuencia...Percepción de posición

  • Ruido general :

    Una fuente de sonido que se aleja, se percibe como una disminución cte de sonido. Esto se le llama rolloff.

  • Diferencia interaural de intensidad :

    Sonidos que vienen del lado derecho se perciben más fuerte por el oído derecho.


Sonido 3d percepci n de posici n1
Sonido 3D: formato interno, número de canales, frecuencia...Percepción de posición

  • Diferencia de tiempo interaural :

    Un sonido que viaja hacia el oyente desde la derecha, llegará antes al oído derecho que al izq.

  • Amortiguación (Rolloff)

    Dada la forma de la persona, los sonidos que vienen desde atrás, así como los que vienen de la derecha y son oídos por el oído izq., son amortiguados.


Sonido 3d distancia m nima y m xima
Sonido 3D: formato interno, número de canales, frecuencia...Distancia Mínima y máxima

  • Sonido cambia de acuerdo a la distancia, pero existe una distancia mínima a la cual el sonido es percibido de la misma forma.

  • Distancia default para un buffer es de un metro, ( unidad básica )

  • La distancia máxima en Un billón, pero para evitar mal uso en caso de que existan drivers DxV, se aconseja preocuparse de esto.


Sonido 3d processing mode
Sonido 3D: formato interno, número de canales, frecuencia...Processing Mode

  • Tres modelos de procesar la información 3D

    Normal

    Relativo a la cabeza

    Disabled


Sonido 3d efecto doppler
Sonido 3D: formato interno, número de canales, frecuencia...Efecto Doppler.

  • La velocidad en DS sólo se usa para calcular efectos Doppler.

  • Cambio en el tono debido a un cambio en la frecuancia de las ondas de sonido.


Sonidos 3d cono de sonido
Sonidos 3D: formato interno, número de canales, frecuencia...Cono De Sonido.

  • Estos conos de sonido sirven para tratar con fuentes de sonido, que se localizan en determinado punto del espacio.


Sonidos 3d cono de sonido1
Sonidos 3D: formato interno, número de canales, frecuencia...Cono De Sonido.


Efectos
Efectos formato interno, número de canales, frecuencia...

  • Los efectos que se pueden aplicar a los sonidos con la librería de DS son los siguientes.

  • Chorus

  • Compression

  • Distortion

  • Echo

  • Environmental Reverberation

  • Flange

  • Gargle

  • Parametric Equalizer

  • Waves Reverberation


Directsound and directmusic
DirectSound and DirectMusic formato interno, número de canales, frecuencia...

  • DirectSound y DirectMusic son componentes separados de DirectX, que tienen funcionalidades muy parecidas. Ambos reproducen sonidos WAV, y DirectMusic al final sintetiza todos los sonidos en ondas que son reproducidos por los buffers de DirectSound.

  • DirectMusic es una solución mucho más completa para la mayoría de las aplicaciones y juegos. Es capaz de reproducir todo tipo de sonidos. DirectSound es mas requerida para el manejo de recursos a bajo nivel. Especial para el manejo de latencias y uso de recursos más adecuado.

  • Interacción entre ambas es fuerte, a través de DS, manejar buffers manejados por DirectMusic.


Directsound and directmusic1
DirectSound and DirectMusic formato interno, número de canales, frecuencia...


Directsound and directmusic2
DirectSound and DirectMusic formato interno, número de canales, frecuencia...


Directsound and directmusic3
DirectSound and DirectMusic formato interno, número de canales, frecuencia...


Directsound and directmusic4
DirectSound and DirectMusic formato interno, número de canales, frecuencia...


Directsound and directmusic5
DirectSound and DirectMusic formato interno, número de canales, frecuencia...


Links
Links formato interno, número de canales, frecuencia...

  • http://msdn.microsoft.com/directx


ad