Direct Sound

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

description

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

Transcript of Direct Sound

Page 1: Direct Sound

Direct SoundDirect Sound

Componente de sonido de la Componente de sonido de la API para aplicaciones API para aplicaciones

multimediales de Microsoft: multimediales de Microsoft: DirectX.DirectX.

Page 2: Direct Sound

La Física del sonidoLa Física del sonido

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

Page 3: Direct Sound

La Física del sonidoLa Física del sonido

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

Page 4: Direct Sound

Sonido en Sonido en Computadores.Computadores.

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

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

Page 5: Direct Sound

Sonido en Sonido en Computadores.Computadores.

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

Los primeros Mac ya manejaban sonido.Los primeros Mac ya manejaban sonido. En DOS de Microsoft, se podía contar En DOS de Microsoft, se podía contar

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

Page 6: Direct Sound

Direct X & DirectSoundDirect X & DirectSound

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

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

Page 7: Direct Sound

Direct X & DirectSoundDirect X & DirectSound

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

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

Page 8: Direct Sound

DirectSound hoyDirectSound hoy

Lo que hoy nos ofrece DirectSound:Lo que hoy nos ofrece DirectSound:

Tocar archivos o recursos en formato WAV. Tocar archivos o recursos en formato WAV. Tocar varios sonidos de manera Tocar varios sonidos de manera

simultanea. simultanea. Asignar alta prioridad a los sonidos. Asignar alta prioridad a los sonidos. Localizar sonidos en ambientes 3-D. Localizar sonidos en ambientes 3-D. Agregar efectos como Ecos y Coros, y Agregar efectos como Ecos y Coros, y

cambiar los parámetros de estos de manera cambiar los parámetros de estos de manera dinámica. dinámica.

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

Page 9: Direct Sound

Api inside.Api inside.

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

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

Page 10: Direct Sound

DirectSound en VxD.DirectSound en VxD.

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

Page 11: Direct Sound

Windows Driver Model Windows Driver Model (WDM) (WDM)

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

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

Es capaz de mezclar WaveOut con Es capaz de mezclar WaveOut con DS.DS.

Page 12: Direct Sound

Buffers de sonido.Buffers de sonido.

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

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

Page 13: Direct Sound

Buffers de sonido.Buffers de sonido. Cada aplicación debe crear al menos un Cada aplicación debe crear al menos un

buffer secundario, para almacenar y tocar buffer secundario, para almacenar y tocar los sonidos.los sonidos.

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

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

Page 14: Direct Sound

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

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

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

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

Page 15: Direct Sound

Programación del API Programación del API DirectSoundDirectSound

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

HRESULT WINAPI DirectSoundCreate(HRESULT WINAPI DirectSoundCreate(

LPGUID lpGuid, LPGUID lpGuid,

LPDIRECTSOUND *ppDS,LPDIRECTSOUND *ppDS,

LPUNKNOWN pUnkOuter );LPUNKNOWN pUnkOuter );

Page 16: Direct Sound

Programación del API Programación del API DirectSoundDirectSound

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

LPDIRECTSOUNDLPDIRECTSOUND pDS;pDS;

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

If (hRes == DS_OK) {If (hRes == DS_OK) {

......

Page 17: Direct Sound

Programación del API Programación del API DirectSoundDirectSound

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

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

HRESULT SetCooperativeLevelHRESULT SetCooperativeLevel( HWND( HWND hwnd hwnd,, DWORDDWORD dwLevel dwLevel ););

Page 18: Direct Sound

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

Se realiza mediante el siguiente código:Se realiza mediante el siguiente código:

DSBUFFERDESC bufferDesc;DSBUFFERDESC bufferDesc;memset(&bufferDesc, 0, sizeof(DSBUFFERDESC));memset(&bufferDesc, 0, sizeof(DSBUFFERDESC));bufferDesc.dwSize = sizeof(DSBUFFERDESC);bufferDesc.dwSize = sizeof(DSBUFFERDESC);bufferDesc.dwFlags = DSBCAPS_PRIMARYBUFFERbufferDesc.dwFlags = DSBCAPS_PRIMARYBUFFER

|DSBCAPS_STICKYFOCUS;|DSBCAPS_STICKYFOCUS;bufferDesc.dwBufferBytes = 0;bufferDesc.dwBufferBytes = 0;bufferDesc.lpwfxFormat = NULL;bufferDesc.lpwfxFormat = NULL;hRes = pDS->CreateSoundBufferhRes = pDS->CreateSoundBuffer

(&bufferDesc,&primaryBuffer, NULL);(&bufferDesc,&primaryBuffer, NULL);

Page 19: Direct Sound

if (hRes == DS_OK)if (hRes == DS_OK){{// Establecemos el formato, 48kz, 16bits, stereo// Establecemos el formato, 48kz, 16bits, stereoWAVEFORMATEX format;WAVEFORMATEX format;memset(&format, 0, sizeof(WAVEFORMATEX));memset(&format, 0, sizeof(WAVEFORMATEX));format.wFormatTag = WAVE_FORMAT_PCM; format.wFormatTag = WAVE_FORMAT_PCM; format.nChannels = 2;format.nChannels = 2; // stereo// stereoformat.nSamplesPerSec = F_MUEST;format.nSamplesPerSec = F_MUEST;format.nAvgBytesPerSec = 4 * F_MUEST ;format.nAvgBytesPerSec = 4 * F_MUEST ;format.nBlockAlign = 4;format.nBlockAlign = 4;format.wBitsPerSample = 16;format.wBitsPerSample = 16;format.cbSize = 0;format.cbSize = 0;hRes = primaryBuffer->SetFormat(&format);hRes = primaryBuffer->SetFormat(&format);

Page 20: Direct Sound

Programación del API Programación del API DirectSoundDirectSound

HRESULT LockHRESULT Lock( ( DWORDDWORD dwWriteCursor dwWriteCursor,,DWORDDWORD dwWriteBytes dwWriteBytes, , LPVOIDLPVOID lplpvAudioPtr1 lplpvAudioPtr1,,LPDWORDLPDWORD lpdwAudioBytes1 lpdwAudioBytes1,,LPVOIDLPVOID lplpvAudioPtr2 lplpvAudioPtr2, , LPDWORDLPDWORD lpdwAudioBytes2 lpdwAudioBytes2, , DWORDDWORD dwFlags dwFlags ););

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

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

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

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

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

Page 21: Direct Sound

Programación del API Programación del API DirectSoundDirectSound

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

HRESULT Unlock(HRESULT Unlock(

LPVOIDLPVOID lpvAudioPtr1 lpvAudioPtr1, ,

DWORDDWORD dwAudioBytes1 dwAudioBytes1, ,

LPVOIDLPVOID lpvAudioPtr2 lpvAudioPtr2, ,

DWORDDWORD dwAudioBytes2 dwAudioBytes2

););

Page 22: Direct Sound

Programación del API Programación del API DirectSoundDirectSound

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

HRESULT PlayHRESULT Play

( (

DWORDDWORD dwReserved1 dwReserved1, ,

DWORDDWORD dwReserved2 dwReserved2, ,

DWORDDWORD dwFlags dwFlags

); );

Page 23: Direct Sound

Programación del API Programación del API DirectSoundDirectSound

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

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

Page 24: Direct Sound

Manejo de sonido 3DManejo de sonido 3D

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

Para la posicion se usan metros. Para la posicion se usan metros. Velocidad se mide por unidades en Velocidad se mide por unidades en

cada eje por segundo, es decir m/s.cada eje por segundo, es decir m/s.

Page 25: Direct Sound

Sonido 3D:Sonido 3D:Percepción de posiciónPercepción de posición

Ruido general : Ruido general :

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

Diferencia interaural de intensidad : Diferencia interaural de intensidad :

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

Page 26: Direct Sound

Sonido 3D:Sonido 3D:Percepción de posiciónPercepción de posición

Diferencia de tiempo interaural :Diferencia de tiempo interaural :

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

Amortiguación (Rolloff)Amortiguación (Rolloff)

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

Page 27: Direct Sound

Sonido 3D:Sonido 3D:Distancia Mínima y máximaDistancia Mínima y máxima Sonido cambia de acuerdo a la distancia, Sonido cambia de acuerdo a la distancia,

pero existe una distancia mínima a la pero existe una distancia mínima a la cual el sonido es percibido de la misma cual el sonido es percibido de la misma forma.forma.

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

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

Page 28: Direct Sound

Sonido 3D:Sonido 3D:Processing Mode Processing Mode

Tres modelos de procesar la Tres modelos de procesar la información 3Dinformación 3D

NormalNormal

Relativo a la cabezaRelativo a la cabeza

DisabledDisabled

Page 29: Direct Sound

Sonido 3D:Sonido 3D:Efecto Doppler.Efecto Doppler.

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

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

Page 30: Direct Sound

Sonidos 3D:Sonidos 3D:Cono De Sonido.Cono De Sonido.

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

Page 31: Direct Sound

Sonidos 3D:Sonidos 3D:Cono De Sonido.Cono De Sonido.

Page 32: Direct Sound

EfectosEfectos Los efectos que se pueden aplicar a los sonidos Los efectos que se pueden aplicar a los sonidos

con la librería de DS son los siguientes.con la librería de DS son los siguientes. ChorusChorus Compression Compression Distortion Distortion Echo Echo Environmental Reverberation Environmental Reverberation Flange Flange Gargle Gargle Parametric Equalizer Parametric Equalizer Waves Reverberation Waves Reverberation

Page 33: Direct Sound

DirectSound and DirectSound and DirectMusicDirectMusic

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

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

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

Page 34: Direct Sound

DirectSound and DirectMusicDirectSound and DirectMusic

FuncionalidFuncionalidadad

DirectMusicDirectMusic DirectSoundDirectSound

Reproducir Reproducir WavsWavs

SiSi SiSi

Reproducir Reproducir MIDIMIDI

SiSi NoNo

Reproducir Reproducir segmentos de segmentos de Produccion Produccion de DMde DM

SISI NoNo

Page 35: Direct Sound

DirectSound and DirectMusicDirectSound and DirectMusic

FuncionalidFuncionalidadad

DirectMusicDirectMusic DirectSoundDirectSound

Cargar Cargar archivos con archivos con contenidos y contenidos y manejar manejar objetosobjetos

SiSi No, pero No, pero existe código existe código de ejemplo de ejemplo utilizable.utilizable.

Controlar Controlar parámetros parámetros musicales en musicales en tiempo tiempo ejecuciónejecución

SiSi NoNo

Menejo de Menejo de tiempos para tiempos para encolar encolar sonidossonidos

SiSi NoNo

Page 36: Direct Sound

DirectSound and DirectSound and DirectMusicDirectMusic

FuncionalidFuncionalidadad

DirectMusicDirectMusic DirectSoundDirectSound

Usar sonidos Usar sonidos descargables descargables (DLS)(DLS)

SiSi NoNo

Setear Setear Volumen, Volumen, tonos y tonos y paneos de paneos de sonidos sonidos

Si, a travez Si, a travez de DS.de DS.

SiSi

Setear Setear volumen en volumen en distintos distintos canales de canales de sonidos.sonidos.

SiSi NoNo

Page 37: Direct Sound

DirectSound and DirectMusicDirectSound and DirectMusic

FuncionalidFuncionalidadad

DirectMusicDirectMusic DirectSoundDirectSound

Implementar Implementar sonido 3-dsonido 3-d

Si, a travez Si, a travez de DS.de DS.

Si.Si.

Aplicar Aplicar efectosefectos

Si, a travez Si, a travez de DS.de DS.

SiSi

Capturar Capturar WAVWAV

NoNo SiSi

Page 38: Direct Sound

DirectSound and DirectMusicDirectSound and DirectMusic

FuncionalidaFuncionalidadd

DirectMusicDirectMusic DirectSoundDirectSound

Implementar Implementar Full DuplexFull Duplex

NoNo SiSi

Control sobre Control sobre localización localización de Buffersde Buffers

NoNo SiSi

Capturar Capturar MIDIMIDI

SiSi NoNo

Page 39: Direct Sound

LinksLinks

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