Revision as of 12:32, 6 April 2012 by galazzo (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

How to access and manage the Microphone raw data in WP

From Nokia Developer Wiki
Jump to: navigation, search
WP Metro Icon Multimedia.png
WP Metro Icon WP8.png
SignpostIcon WP7 70px.png
Article Metadata
Tested with
SDK: built and tested against WP SDK 7.1
Devices(s): Nokia Lumia 800
Platform(s): Windows Phone
Windows Phone 8
Windows Phone 7.5
Keywords: Microphone, Volume, Raw
Created: galazzo (06 Apr 2012)
Last edited: galazzo (06 Apr 2012)


This article will explain how to manage microphone raw data in Windows Phone, focusing on Volume management. Will be shown a real application Shooter Assistant, a work in progress project to assist the shooter during training for Olympic Trap speciality, also applicable for Skeet and Double Trap speciality.

Creating the project

  • Install [Windows Phone SDK http://msdn.microsoft.com/en-us/library/ff402530%28v=vs.92%29.aspx]
  • Create a new project by selecting the File | New Project menu command.
  • The New Project window will be displayed. Expand the Visual C# templates, and then select the Silverlight for Windows Phone templates.
  • Select the Windows Phone Application template. Fill in the project name as desired. {Note|Don't call it simply "Microphone"}
  • In the Solution Explorer, right-click References and choose Add Reference.
  • Choose Microsoft.Xna.Framework from the list of .NET components and click the OK button.
  • If you see a dialog that warns about adding a reference to a Silverlight assembly, click the Yes button.

Add the following using statements to the top of your MainPage.xaml.cs file:

using System.IO;
using System.Windows.Threading;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;

In MainPage.xaml.cs, declare variables as global members of your MainPage class:

public partial class MainPage : PhoneApplicationPage
Microphone microphone = Microphone.Default;
byte[] buffer;
MemoryStream stream = new MemoryStream();
SoundEffect sound;
// Constructor
public MainPage()

Add the following code to the constructor of your MainPage class after the call to InitializeComponent

// Contructor
public MainPage()
DispatcherTimer dt = new DispatcherTimer();
dt.Interval = TimeSpan.FromMilliseconds(50);
dt.Tick += delegate { try { FrameworkDispatcher.Update(); } catch { } };
microphone.BufferReady += new EventHandler<EventArgs>(microphone_BufferReady);

Now add the following method to manage Microphone raw data

void microphone_BufferReady(object sender, EventArgs e)
stream.Write(buffer, 0, buffer.Length);
281 page views in the last 30 days.