¿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?

Robinicks
fuente

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);
}
Martín
fuente