public MainWindow() { InitializeComponent(); this.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen; this.KeyDown += new KeyEventHandler(MainWindow_KeyDown); // Print out all the possible input devices to console. Mostly for debugging. int waveInDevices = WaveIn.DeviceCount; for (int waveInDevice = 0; waveInDevice < waveInDevices; waveInDevice++) { WaveInCapabilities deviceInfo = WaveIn.GetCapabilities(waveInDevice); Console.WriteLine("Device {0}: {1}, {2} channels", waveInDevice, deviceInfo.ProductName, deviceInfo.Channels); } // Instantiate a waveIn device and start recording. waveIn = new WaveIn(); waveIn.BufferMilliseconds = 47 * buffersize / 2048; waveIn.DeviceNumber = 0; waveIn.WaveFormat = new WaveFormat(44100, 32, 1); waveIn.DataAvailable += waveIn_DataAvailable; try { waveIn.StartRecording(); } catch (NAudio.MmException e) { Console.WriteLine(e.ToString() + "\nPlug in a microphone!"); } history = new List <List <int> >(); inverse_history = new List <List <int> >(); pointHist = new PointCollection(); bin = new int[buffersize * 2]; sampledata = new float[buffersize * 2]; priori = new double[buffersize * 2]; //Initializing all the global variables to base values for 1 speaker configuration. channelLabel = new int[1]; channelLabel[0] = 1; velocity = new int[1]; velocity[0] = 0; prev_displacement = new int[1]; prev_displacement[0] = 0; instant_displacement = new int[1]; instant_displacement[0] = 0; towards_displacement = new int[1]; towards_displacement[0] = 1; displacement = new int[1]; displacement[0] = 0; for (int i = 0; i < buffersize * 2; i++) { bin[i] = i; sampledata[i] = 0; priori[i] = 0; } // Kalman filter related stuff. filter = new VDKalman(2); filter.initialize(1, .1, 1, 0); // To prevent problems with empty lists, we assume 1 channel to start. history.Add(new List <int> { 0 }); inverse_history.Add(new List <int> { 0 }); // Load up the classifier model file. WekaHelper.initialize(); }