XNAで生のサウンドデータを記録できますか?


9

XNA 4には、Microsoft.Xna.Framework.Audioが含まれています。ドキュメントに記載されているように、APIを介してマイクから生のサウンドデータを読み取ることができるマイククラス

GetData-マイクから最新の記録データを取得します。

GetSampleDuration-バッファのサイズに基づいてオーディオ再生の期間を返します。

GetSampleSizeInBytes-このマイクオブジェクトのオーディオの指定された期間を保持するために必要なバイト配列のサイズを返します。

このクラスを使用してサウンドデータを読み取り、配列に記録してから再生できますか?Xbox 360では?

回答:


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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.