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

- Rejestracja:prawie 12 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Warszawa
- Postów:1589
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/
Pawelsar1
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.

dam1an
Napisz nowy post i załącz kod nikt tu nie jest jasnowidzem.
- Rejestracja:ponad 10 lat
- Ostatnio:ponad 4 lata
- Postów:37
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.
- Rejestracja:ponad 10 lat
- Ostatnio:około 10 lat
- Postów:10
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#.