Pobieranie strumienia dźwięku z mikrofonu

Odpowiedz Nowy wątek
2014-12-11 22:30
0

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

Pozostało 580 znaków

2014-12-11 22:46
0

Zdaje się że będzie Ci potrzebne to:
http://msdn.microsoft.com/en-us/library/ff827802.aspx
i to http://sourceforge.net/projects/kissfft/

Dzięki. Na razie udało mi się pobrać dźwięk z mikrofonu i go odtworzyć, ale w XNA. Czy jest możliwość załączenia i wykorzystania metody w WinForm? Przepisałem program i wywala mi taki oto błąd: An unhandled exception of type 'System.InvalidOperationException' occurred in Microsoft.Xna.Framework.dll Additional information: FrameworkDispatcher.Update has not been called. Regular FrameworkDispatcher.Update calls are necessary for fire and forget sound effects and framework events to function correctly. See http://go.microsoft.com/fwlink/?LinkId=193853 for details. - Pawelsar1 2014-12-12 22:51
Napisz nowy post i załącz kod nikt tu nie jest jasnowidzem. - dam1an 2014-12-12 22:55

Pozostało 580 znaków

2014-12-12 22:59
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.

Pozostało 580 znaków

2014-12-14 23:05
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#.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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