Bạn có thể ghi dữ liệu âm thanh thô trong XNA không?


9

XNA 4 bao gồm Microsoft.Xna.Framework.Audio. Lớp micrô dường như có thể đọc dữ liệu âm thanh thô từ micrô thông qua API của nó như được ghi lại:

GetData - Nhận dữ liệu mới nhất được ghi từ micrô.

GetSampleDuration - Trả về thời lượng phát lại âm thanh dựa trên kích thước của bộ đệm.

GetSampleSizeInBytes - Trả về kích thước của mảng byte cần thiết để giữ thời lượng âm thanh được chỉ định cho đối tượng micrô này.

Tôi có thể đọc dữ liệu âm thanh bằng cách sử dụng lớp này, ghi lại trong một mảng và sau đó phát lại không? Trên Xbox 360?

Câu trả lời:


7

Bạn có thể thử gửi dữ liệu từ micrô đến Hiệu ứng âm thanh động .

Tôi chỉ viết một số mã để kiểm tra này, nó hoạt động.

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.