Czy możesz nagrywać nieprzetworzone dane dźwiękowe w XNA?


9

XNA 4 zawiera Microsoft.Xna.Framework.Audio. Klasa mikrofonu, która pozornie może odczytać nieprzetworzone dane dźwiękowe z mikrofonu za pośrednictwem interfejsu API, jak udokumentowano:

GetData - Pobiera najnowsze nagrane dane z mikrofonu.

GetSampleDuration - Zwraca czas odtwarzania dźwięku na podstawie wielkości bufora.

GetSampleSizeInBytes - Zwraca rozmiar tablicy bajtów wymaganej do utrzymania określonego czasu trwania dźwięku dla tego obiektu mikrofonu.

Czy mogę odczytać dane dźwiękowe za pomocą tej klasy, nagrać je w tablicy, a następnie odtworzyć? Na Xbox 360?

Odpowiedzi:


7

Możesz spróbować przesłać dane z mikrofonu do dynamicznego efektu dźwiękowego .

Właśnie napisałem kod, aby to przetestować, to działa.

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);
}

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.