Riesci a registrare dati audio grezzi in XNA?


9

XNA 4 include Microsoft.Xna.Framework.Audio. Classe di microfono che può apparentemente leggere i dati audio grezzi dal microfono tramite la sua API come documentato:

GetData : ottiene gli ultimi dati registrati dal microfono.

GetSampleDuration : restituisce la durata della riproduzione audio in base alla dimensione del buffer.

GetSampleSizeInBytes - Restituisce la dimensione dell'array di byte richiesta per contenere la durata dell'audio specificata per questo oggetto microfono.

Posso leggere i dati audio usando questa classe, registrarli in un array e quindi riprodurli? Su Xbox 360?

Risposte:


7

Potresti provare a inviare i dati dal microfono a un effetto sonoro dinamico .

Ho appena scritto del codice per testarlo, funziona.

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.