क्या आप XNA में रॉ साउंड डेटा रिकॉर्ड कर सकते हैं?


9

XNA 4 में Microsoft.Xna.Framework.Audio शामिल है। माइक्रोफोन वर्ग जो प्रतीत होता है कि माइक्रोफ़ोन से कच्चे ध्वनि डेटा को उसके एपीआई के माध्यम से दस्तावेज के रूप में पढ़ा जा सकता है:

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.