¿Puedes grabar datos de sonido sin formato en XNA?


9

XNA 4 incluye Microsoft.Xna.Framework.Audio. Clase de micrófono que aparentemente puede leer los datos de sonido sin procesar del micrófono a través de su API como se documenta:

GetData : obtiene los últimos datos grabados del micrófono.

GetSampleDuration : devuelve la duración de la reproducción de audio según el tamaño del búfer.

GetSampleSizeInBytes : devuelve el tamaño de la matriz de bytes necesaria para mantener la duración de audio especificada para este objeto de micrófono.

¿Puedo leer datos de sonido usando esta clase, grabarlos en una matriz y luego reproducirlos? ¿En la Xbox 360?

Respuestas:


7

Puede intentar enviar los datos del micrófono a un efecto de sonido dinámico .

Acabo de escribir un código para probar esto, funciona.

DynamicSoundEffectInstance sound;

protected override void Initialize()
{
    sound = new DynamicSoundEffectInstance(Microphone.Default.SampleRate, AudioChannels.Mono);

    Microphone.Default.BufferReady += (a, b) =>
    {
        byte[] data = new byte[Microphone.Default.GetSampleSizeInBytes(Microphone.Default.BufferDuration)];
        Microphone.Default.GetData(data);

        sound.SubmitBuffer(data);
    };
    Microphone.Default.Start();

    base.Initialize();
}

protected override void Update(GameTime gameTime)
{
    if (gameTime.TotalGameTime.TotalSeconds > 5)
    {
        Microphone.Default.Stop();
        sound.Play();
    }

    base.Update(gameTime);
}

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.