Bisakah Anda merekam data suara mentah dalam XNA?


9

XNA 4 termasuk Microsoft.Xna.Framework.Audio. Kelas mikrofon yang tampaknya dapat membaca data suara mentah dari mikrofon melalui APInya seperti yang didokumentasikan:

GetData - Mendapat data terbaru yang direkam dari mikrofon.

GetSampleDuration - Mengembalikan durasi pemutaran audio berdasarkan ukuran buffer.

GetSampleSizeInBytes - Mengembalikan ukuran array byte yang diperlukan untuk menahan durasi audio yang ditentukan untuk objek mikrofon ini.

Bisakah saya membaca data suara menggunakan kelas ini, merekamnya dalam sebuah array dan kemudian memutarnya kembali? Di Xbox 360?

Jawaban:


7

Anda dapat mencoba mengirimkan data dari mikrofon ke Efek Suara Dinamis .

Saya baru saja menulis beberapa kode untuk menguji ini, itu berhasil.

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.