XNA'da ham ses verileri kaydedebiliyor musunuz?


9

XNA 4, Microsoft.Xna.Framework.Audio dosyasını içerir. Ham ses verilerini, belgelendiği gibi API'sı aracılığıyla mikrofondan açıkça okuyabilen mikrofon sınıfı:

GetData - Mikrofondan en son kaydedilen verileri alır.

GetSampleDuration - Arabellek boyutuna göre ses çalma süresini döndürür.

GetSampleSizeInBytes - Bu mikrofon nesnesi için belirtilen ses süresini tutmak için gereken bayt dizisinin boyutunu döndürür.

Bu sınıfı kullanarak ses verilerini okuyabilir, bir diziye kaydedebilir ve sonra çalabilir miyim? Xbox 360'ta mı?

Yanıtlar:


7

Mikrofondan veriyi Dinamik Ses Efektine göndermeyi deneyebilirsiniz .

Sadece bunu test etmek için bazı kod yazdım, işe yarıyor.

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.