Чи можете ви записувати необроблені звукові дані в 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);
}

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.