Можете ли вы записать необработанные звуковые данные в XNA?

9

XNA 4 включает в себя Microsoft.Xna.Framework.Audio. Класс микрофона, который может, казалось бы, считывать необработанные звуковые данные с микрофона через его API, как описано в документации

GetData - получает последние записанные данные с микрофона.

GetSampleDuration - возвращает продолжительность воспроизведения звука в зависимости от размера буфера.

GetSampleSizeInBytes - возвращает размер байтового массива, необходимого для хранения указанной длительности аудио для этого объекта микрофона.

Могу ли я прочитать звуковые данные, используя этот класс, записать их в массив и затем воспроизвести? На Xbox 360?

Вспышка
источник

Ответы:

7

Вы можете попробовать отправить данные с микрофона на динамический звуковой эффект .

Я просто написал код, чтобы проверить это, это работает.

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);
}
Мартин
источник