您可以在XNA中记录原始声音数据吗?


9

XNA 4包含Microsoft.Xna.Framework.Audio。麦克风类,看起来可以通过其API从麦克风读取原始声音数据,如所记录:

GetData-从麦克风获取最新记录的数据。

GetSampleDuration-根据缓冲区的大小返回音频播放的持续时间。

GetSampleSizeInBytes-返回保持此麦克风对象的指定音频持续时间所需的字节数组的大小。

我可以使用此类读取声音数据,将其记录在数组中然后再播放吗?在Xbox 360上?

Answers:


7

您可以尝试将麦克风中的数据提交给动态音效

我只是写了一些代码来测试这一点,它可以工作。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.