Windows Phone – Audio recorder
Audio recorder is a typical application of a mobile phone. Man can use it to record audio from microphone and use it for his ring phone, store audio note or record evidence of crimes as in Hollywood films, etc… Therefore today I decide to write a small audio recorder which should run on any mobile phone using windows phone OS. The application is very small but helpful. You can get source code in the end of this post.
The core of this application is class Microphone of Microsoft.Xna.Framework.Audio which can be used by referencing to Microsoft.Xna.Framework. By declaring a microphone device, setting some predefined features, then I can handle the event BufferReady to record sound section of 1 second from microphone into an array of byte and append it to memory stream.
Microphone m_micDevice = Microphone.Default;
private void btnStart_Click(object sender, RoutedEventArgs e)
{
...
m_micDevice.BufferDuration = TimeSpan.FromMilliseconds(1000);
m_baBuffer = new byte[m_micDevice.GetSampleSizeInBytes(m_micDevice.BufferDuration)];
m_micDevice.BufferReady +=new EventHandler(m_Microphone_BufferReady);
m_micDevice.Start();
}
void m_Microphone_BufferReady(object sender, EventArgs e)
{
m_micDevice.GetData(m_baBuffer);
...
m_msAudio.Write(m_baBuffer,0, m_baBuffer.Length);
}
When the users click on Stop button, they will be asked for saving the memory stream to IsolateStorageFile
if (txtAudio.Text != "")
{
IsolatedStorageFile isfData = IsolatedStorageFile.GetUserStoreForApplication();
string strSource = txtAudio.Text;
int nIndex = 0;
while (isfData.FileExists(txtAudio.Text))
{
strSource = txtAudio.Text + nIndex.ToString().PadLeft(2, '0') + ".wav";
}
IsolatedStorageFileStream isfStream = new IsolatedStorageFileStream(txtAudio.Text, FileMode.Create, IsolatedStorageFile.GetUserStoreForApplication());
isfStream.Write(m_msAudio.ToArray(), 0, m_msAudio.ToArray().Length);
isfStream.Close();
}
So it’s very simple to write an audio recorder in Windows Phone 7. In my recorder I add some data visualizer to notify the user that the recording is going on. This visualizer uses first 100 value of audio data and shows them in a bar chart. These values will vary continuously and make visualizer animating.
<phoneNavigation:PhoneApplicationPage.Resources>
<DataTemplate x:Key="template">
<StackPanel Orientation="Horizontal" VerticalAlignment="Bottom">
<Rectangle Height="{Binding}" Width="5" Fill="Blue" />
<Rectangle Width="2" />
</StackPanel>
</DataTemplate>
</phoneNavigation:PhoneApplicationPage.Resources>
<ItemsControl x:Name="icBar" ItemsSource="{Binding Path=AudioData}"
ItemTemplate="{StaticResource template}" Margin="0,6,0,114">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
As you can see in order to update record progressing on GUI, I used data binding for ItemsSource property of ItemsControl and update this source each time when the event BufferReady is fired.
void m_Microphone_BufferReady(object sender, EventArgs e)
{
...
this.Dispatcher.BeginInvoke(() =>
{
vm.LoadAudioData(m_baBuffer);
...
}
);
...
}
The complete source code of this audio recorder you can download here “Windows Phone Audio Recorder“. If the archive is corrupted, see source code here
http://hintdesk.com/Web/Source/Windows%20Phone%20Audio%20Recorder/
Popularity: 10% [?]

The link works, but it’s pointing to an empty .zip file.
@John: I tested the link. The zip is fine. There are source code files in it
I have the same problem as John – when opening in WinZip 9.0 on Windows XP it says “cannot open file: it does not appear to be a valid archive”. When “explore”‘ing in explorer.exe it says “The compressed (zipped) folder is invalid or corrupted”. The zipfile is 90.6 KB in size. Weird.
Hi, I have the same problem – cannot open file: it does not appear to be a valid archive.
Please, re-archive file.
@Henrik and Victor: I updated the archive again. Try if you can open it. I use WinRAR to make ZIP file.
Thanks for the great article.
I use WM Sound Recorder to record my HTC Touch Pro phone conversation. It could also record outgoing and incoming calls automatically.
The zip file still appears to be corrupted – please replace it when you get a chance. Couldn’t open it with Windows 7 Explorer or WinRAR.
@Dan: Update again using Windows 7. If it does not work, send me a feedback.
I tried again and still get the following error dialog in Windows 7 Professional Edition x64 when trying to open the zip file:
“Windows cannot open the folder.
The Compressed (zipped) Folder ‘C:\…\Windows Phone Audio Recorder.zip’ is invalid.
Dan
I’m seeing the same issue. WinRar will open the file but there only appear to be one, no extension file inside the archive.
@Dan and Nick: Browse the source code directly here http://hintdesk.com/Web/Source/Windows%20Phone%20Audio%20Recorder/
What about this error: “Cannot implicitly convert type ‘System.EventHandler’ to ‘System.EventHandler’ ….\MainPage.xaml.cs 48 39″ ?
2 author,
thx!! Good sample!
Florin,
is it difficult to think? Just add there .
EventArgs
[...] http://hintdesk.com/windows-phone-audio-recorder/ [...]
hi
please tell me about the ProgressPopup.IsOpen
thanks
I too am not able to unzip.
I did manually type from article / code samples and can’t get it working.
My issue seems to be that the m_Microphone_BufferReady event never fires. During playback my memory stream is 0 bytes long.
I have a microphone attached to my development (Vista) computer and assume that Phone 7 emulator will automatically use the attached mic? If not, do I need to somehow configure the emulator to use the mic?
Even if no mic is attached, should I not be receiving a byte stream every second?
I also notice that you are saving raw data as a wav file in Isolated Storage. If I simply transfer that file to my desktop (e.g. thru a web service), should I be able to listen to that as a normal wav file? I read somewhere that a Wav file needs to store some sort of header info.
@Ed: Use the second link to view the code directly.
- The Emulator will recognize your mic. You do not need to configure anything. If the mic can not be attached, you can not record anything.
- The .wav file can be played as normal .wav audio file.
hi
Do someone knows where are the sounds stored, I want to use it binding with other function, but nothing found.
Does it related to Isolated Storage?
@Jelly: Yes it’s stored in IsolatedStorage.
[...] via Push Notifications. (Thanks Anand) WINDOWS PHONE 7 SOFTWARE & PROJECTS: Audio Recorder application can record & save audio using the phone’s microphone. [...]
Thanks for the sample!
However, I use VStudio Pro RTM, and it does not load the solution.
To work around that, I created a new solution, and added the code into that – most things are fine.
Only one problem left: I have no visualization, only numbers appear.
The link works. Thank your for sample share.
[...] Enlace: http://hintdesk.com/windows-phone-audio-recorder/ [...]
Leave your response!
Computer security »
Hacking – How to hack WPA/WPA2 Password with BackTrack through cracking WPS?
Last week I’ve read small news on c’t magazine saying that the default password of EasyBox router used for Vodafone, Telecom, Arcor in Germany … was hacked by Sebastian Petters. That means if someone is using default settings of EasyBox, you can get his WLAN password easily and then access his network. This default password was generated by a algorithm and this algorithm was patented. Therefore like other patents, the complete description of algorithm was …
Programming »
C# – Host Microsoft Chart in WPF application
How we provide our customers the way to display their data is a important feature of every software for data management. Maybe the users want to use Bar, Line, Pie, Pyramid chart… someone wants to display as 2D and the other wants 3D for his plotting. The financial prefer Kagi, Renko, Point and Figure chart… meanwhile the statisticians maybe use Bar and Column, Cylinder or just simple Line chart. Because of these numerously different requirements …
Tutorial »
Tools – Doidw – Do I DDos this website?
Last year I have seen a lot of DDOS attacks aimed to website of news or independent communities. These websites were attacked by a botnet built from unknown virus (which wasn’t detected by any antivirus at that time). Some professionals found some variants of this virus but the websites were still heavily attacked.
Some of professional users are willing to help to find more variants of this virus. They would like to check if computers of …
Donation
Archives
Blogroll
Tag Cloud
.net reactor 64 bit 2012 asp.net auto backtrack blog c# codeveil 3.x database Entertainment firefox game gold hack hacking master volume munich mvvm online notes password pet php picasa reverse engineering security sharepoint silverlight ssh theme tlbb tool trip visual studio wallpaper wcf web album webpart web service windows windows 7 windows phone word wpf yahoo messengerRecent Posts
Most Commented
Most Popular