Pobieranie strumienia dźwięku z mikrofonu

0

Witam. Czy są jakieś biblioteki do C# pozwalające pobrać dźwięk z mikrofonu i określić jego częstotliwość?

0
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Xna.Framework.Audio;
using System.IO;

namespace AudioTestWF
{
    public partial class Form1 : Form
    {


        public Form1()
        {
            InitializeComponent();
            microphone.BufferReady += new EventHandler<EventArgs>(microphone_BufferReady);

        }

        MemoryStream stream = new MemoryStream();
        Microphone microphone = Microphone.Default;
        byte[] buffer;
        bool clicked = false;

        private void button1_Click(object sender, EventArgs e)
        {
            if(clicked)
            {
                stop();
                FileStream file = new FileStream(@"C:\Users\Piotr\Documents\Visual Studio 2013\Projects\GetAudio\GetAudio\GetAudio\SaveData.txt", FileMode.Create, FileAccess.Write);
                StreamWriter stream = new StreamWriter(file);

                for (int j = 0; j < buffer.Length; j++)
                {
                    stream.Write(buffer[j].ToString() + ";");
                }

                stream.Close();
                file.Close();

            } else
            {
                microphone.BufferDuration = TimeSpan.FromMilliseconds(100);
                buffer = new byte[microphone.GetSampleSizeInBytes(microphone.BufferDuration)];
                stream.SetLength(0);
                microphone.Start();
                clicked = true;
            }

        }

        void microphone_BufferReady(object sender, EventArgs e)
        {
            microphone.GetData(buffer);
            stream.Write(buffer, 0, buffer.Length);
        }

        public void stop()
        {
            if (microphone.State == MicrophoneState.Started)
            {
                microphone.Stop();
            }
        }
    }
}
 

To jest kod programu.

0

W kodzie bledu pisze o co chodzi, zeby to dzialalo musi byc metoda Update czyli po prostu glowna petla gry. Dzwieku z mikrofonu nie pobierzesz sobie o tak.Taki sposob jaki robisz jest troche slaby. Obejsciem tego moze byc np zrobienie niewidzialnej kontrolki do ktorej wrzucasz XNA. Chodzi mniej wiecej o wyswietlanie okna XNA w formie, w Twoim przypadku dasz taka kontrolke visible=false i tyle. Ale mowie to jest trosze slaby pomysl, pomysl lepiej nad jakas dll dla czystego c#.

1 użytkowników online, w tym zalogowanych: 0, gości: 1