﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="http://mycompany.com/mynamespace"><channel><title>Alvas.Net</title><link>http://www.alvas.net/</link><description>Alvas.Net News</description><language>en-us</language><item><title>2013-05-05 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published.&lt;br&gt;
&lt;br&gt;New classes were added:
&lt;ol type="square"&gt;
&lt;li&gt; AiffReader class for reading audio data from AIFF (Audio Interchange File Format) streams.
&lt;li&gt; AiffWriter class for writing audio data to AIFF (Audio Interchange File Format) streams.
&lt;/ol&gt;
</description><pubDate>Sun, 5 May 2013 07:00:00 GMT</pubDate></item><item><title>2011-11-06 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published.&lt;br&gt;
&lt;br&gt;New features:
&lt;ol type="square"&gt;
&lt;li&gt;Insert/overwrite recorging modes for RecordPlayer class
&lt;li&gt;Supports insert/overwrite modes for WaveWriter and WaveReadWriter classes
&lt;li&gt;Returns max volume for specified audio format and data
&lt;li&gt;Returns audio data queue length for PlayerEx
&lt;li&gt;Clears audio data queue for PlayerEx
&lt;li&gt;Console example
&lt;li&gt;Windows Service example
&lt;/ol&gt;
</description><pubDate>Sun, 6 Nov 2011 07:00:00 GMT</pubDate></item><item><title>Console and multithreaded recording and playback</title><link>http://www.alvas.net/alvas.audio,articles.aspx#console-and-multithreaded-recording-and-playback</link><description>
&lt;p&gt;&lt;b&gt;Question:&lt;/b&gt; How to use RecorderEx and PlayerEx in console application or Windows Service?&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Answer:&lt;/b&gt; In order to use RecorderEx and PlayerEx in a console application or Windows Service need to create instances of these classes by using a parameterized constructor:


&lt;br/&gt;&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;RecorderEx&lt;/span&gt;(&lt;span style="color: blue;"&gt;true&lt;/span&gt;) and 
&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PlayerEx&lt;/span&gt;(&lt;span style="color: blue;"&gt;true&lt;/span&gt;), respectively. The same is true for multi-threaded recorder and player.&lt;/p&gt;
&lt;p&gt;Below is an example of full duplex Recorder and Player.&lt;/p&gt;

&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; Alvas.Audio;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; AudioConsCs&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Program&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue;"&gt;string&lt;/span&gt;[] args)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rex.Data += &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;RecorderEx&lt;/span&gt;.&lt;span style="color: #2b91af;"&gt;DataEventHandler&lt;/span&gt;(rex_Data);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rex.Open += &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;EventHandler&lt;/span&gt;(rex_Open);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rex.Close += &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;EventHandler&lt;/span&gt;(rex_Close);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rex.Format = pcmFormat;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rex.StartRecord();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515;"&gt;"Please press enter to exit!"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Console&lt;/span&gt;.ReadLine();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rex.StopRecord();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;RecorderEx&lt;/span&gt; rex = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;RecorderEx&lt;/span&gt;(&lt;span style="color: blue;"&gt;true&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PlayerEx&lt;/span&gt; play = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PlayerEx&lt;/span&gt;(&lt;span style="color: blue;"&gt;true&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; pcmFormat = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.GetPcmFormat(1, 16, 44100);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; rex_Open(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; play.OpenPlayer(pcmFormat);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; play.StartPlay();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; rex_Close(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; play.ClosePlayer();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; rex_Data(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;DataEventArgs&lt;/span&gt; e)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] data = e.Data;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; play.AddData(data);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Below is an example of multithreaded full duplex Recorder and Player in Windows Service.&lt;/p&gt;

&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: green;"&gt;/*&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: green;"&gt;&amp;nbsp;* rem run cmd as administrator&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: green;"&gt;&amp;nbsp;* rem install service&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: green;"&gt;&amp;nbsp;* \\Windows\Microsoft.NET\Framework\v2.0.50727\installutil AudioWindowsServiceCs.exe&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: green;"&gt;&amp;nbsp;* rem uninstall service&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: green;"&gt;&amp;nbsp;* \\Windows\Microsoft.NET\Framework\v2.0.50727\installutil AudioWindowsServiceCs.exe /u&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: green;"&gt;&amp;nbsp;*/&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.ServiceProcess;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; System.Threading;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;using&lt;/span&gt; Alvas.Audio;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; AudioWindowsServiceCs&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;{&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;partial&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;AudioService&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;ServiceBase&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; AudioService()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnStart(&lt;span style="color: blue;"&gt;string&lt;/span&gt;[] args)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Thread&lt;/span&gt; t = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Thread&lt;/span&gt;(Start);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; t.Start();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnStop()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rex.StopRecord();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Start()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rex.Data += &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;RecorderEx&lt;/span&gt;.&lt;span style="color: #2b91af;"&gt;DataEventHandler&lt;/span&gt;(rex_Data);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rex.Open += &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;EventHandler&lt;/span&gt;(rex_Open);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rex.Close += &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;EventHandler&lt;/span&gt;(rex_Close);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rex.Format = pcmFormat;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rex.StartRecord();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;RecorderEx&lt;/span&gt; rex = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;RecorderEx&lt;/span&gt;(&lt;span style="color: blue;"&gt;true&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PlayerEx&lt;/span&gt; play = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;PlayerEx&lt;/span&gt;(&lt;span style="color: blue;"&gt;true&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; pcmFormat = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.GetPcmFormat(1, 16, 44100);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; rex_Open(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; play.OpenPlayer(pcmFormat);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; play.StartPlay();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; rex_Close(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; play.ClosePlayer();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; rex_Data(&lt;span style="color: blue;"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af;"&gt;DataEventArgs&lt;/span&gt; e)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] data = e.Data;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; play.AddData(data);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;}&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;        
Download &lt;a href="Download/Samples/AudioConsoleAndWindowsService.zip"&gt;examples&lt;/a&gt; and &lt;a href="Download/Alvas.Audio.zip"&gt;Alvas.Audio Trial&lt;/a&gt;
</description><pubDate>Sat, 23 Jul 2011 07:00:00 GMT</pubDate></item><item><title>Vox audio file format</title><link>http://www.alvas.net/alvas.audio,articles.aspx#vox-audio-file-format</link><description>
&lt;p&gt;
&lt;b&gt;Question:&lt;/b&gt;  I found that your vox converter doesn't handle vox files from the Orator phone dictation system right.&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Answer:&lt;/b&gt; There are so many questions about Vox format. What is the Vox format? Vox audio file format is a headerless audio format data, which generally contains &lt;b&gt;Dialogic_ADPCM&lt;/b&gt;, but may also include &lt;a target="_blank" class="help" href="http://en.wikipedia.org/wiki/A-law"&gt;A-law&lt;/a&gt;, &lt;a target="_blank" class="help" href="http://en.wikipedia.org/wiki/Mu-law_algorithm"&gt;Mu-law&lt;/a&gt;, &lt;a target="_blank" class="help" href="http://en.wikipedia.org/wiki/Pulse-code_modulation"&gt;PCM&lt;/a&gt;, and any other type of audio data.
&lt;br/&gt;It means that vox file doesn't have the header and extention ".vox" doesn't say anything at all. Therefore it is very important to know in which format you have the audio data in the vox file!

&lt;p&gt;See code below for the different types of Vox files.&lt;/p&gt;

&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//Dialogic_ADPCM&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Vox2Wav(&lt;span style="color: blue;"&gt;string&lt;/span&gt; voxFile, &lt;span style="color: blue;"&gt;int&lt;/span&gt; samplesPerSec)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;BinaryReader&lt;/span&gt; br = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;BinaryReader&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.OpenRead(voxFile));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; format = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.GetPcmFormat(1, 16, samplesPerSec);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;WaveWriter&lt;/span&gt; ww = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;WaveWriter&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.Create(voxFile + &lt;span style="color: #a31515;"&gt;".wav"&lt;/span&gt;), &lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.FormatBytes(format));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Vox&lt;/span&gt;.Vox2Wav(br, ww);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; br.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ww.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; VoxConv2(&lt;span style="color: blue;"&gt;string&lt;/span&gt; voxFile)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//CCITT u-Law, 8000 Hz, 1 channels&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;WaveFormat&lt;/span&gt; wf = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;WaveFormat&lt;/span&gt;();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; wf.wFormatTag = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.MuLawFormatTag;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; wf.nChannels = 1;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; wf.nSamplesPerSec = 8000;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;FormatDetails&lt;/span&gt;[] formatList = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.GetFormatList(wf);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; format = formatList[0].FormatHandle;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;RawReader&lt;/span&gt; rr = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;RawReader&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.OpenRead(voxFile), format);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] data = rr.ReadData();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rr.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;WaveWriter&lt;/span&gt; ww = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;WaveWriter&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.Create(voxFile + &lt;span style="color: #a31515;"&gt;".wav"&lt;/span&gt;),&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.FormatBytes(format));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ww.WriteData(data);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ww.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Raw2Wav(&lt;span style="color: blue;"&gt;string&lt;/span&gt; fileName)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//A-Law mono at 8000 HZ&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;WaveFormat&lt;/span&gt; wf = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;WaveFormat&lt;/span&gt;();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; wf.wFormatTag = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.ALawFormatTag;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; wf.nChannels = 1;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; wf.nSamplesPerSec = 8000;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;FormatDetails&lt;/span&gt;[] formatList = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.GetFormatList(wf);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; format = formatList[0].FormatHandle;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;RawReader&lt;/span&gt; rr = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;RawReader&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.OpenRead(fileName), format);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] data = rr.ReadData();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; rr.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;WaveWriter&lt;/span&gt; ww = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;WaveWriter&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.Create(fileName + &lt;span style="color: #a31515;"&gt;".wav"&lt;/span&gt;),&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.FormatBytes(format));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ww.WriteData(data);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ww.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

For more examples of working with vox files you can find on &lt;a href="alvas.audio,tips.aspx"&gt; How to.. &lt;/a&gt; page. The search string "vox" gives at least 79 matches.
&lt;/p&gt;
</description><pubDate>Sat, 16 Jul 2011 07:00:00 GMT</pubDate></item><item><title>Removes DC offset.</title><link>http://www.alvas.net/alvas.audio,articles.aspx#removes-dc-offset</link><description>
&lt;p&gt;
DC offset is an offsetting of a signal from zero. It occurs when hardware, such as a sound card, adds DC offset to the recorded audio signal.
&lt;br/&gt;DC offset is shift of the red line comparatively to the black one on figure below.&lt;/p&gt;
&lt;img src="http://alvas.net/image/DcOffset.png" /&gt;
&lt;p&gt;
To remove the DC offset is used AudioCompressionManager.RemoveDcOffset method. See code below&lt;/p&gt;

&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; RemoveDcOffset(&lt;span style="color: blue;"&gt;string&lt;/span&gt; fileName)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;DsReader&lt;/span&gt; dr = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DsReader&lt;/span&gt;(fileName);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; format = dr.ReadFormat();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] data = dr.ReadData();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// Removes DC offset.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] dataNew = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.RemoveDcOffset(format, data);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dr.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;WaveWriter&lt;/span&gt; ww = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;WaveWriter&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.Create(fileName + &lt;span style="color: #a31515;"&gt;".wav"&lt;/span&gt;), &lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.FormatBytes(format));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ww.WriteData(dataNew);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ww.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;a href="http://alvas.net/Download/Alvas.Audio.zip"&gt;Alvas.Audio Trial&lt;/a&gt;
</description><pubDate>Sun, 12 Jun 2011 07:00:00 GMT</pubDate></item><item><title>Converts Mp3 Joint Stereo to mono.</title><link>http://www.alvas.net/alvas.audio,articles.aspx#converts-mp3-joint-stereo-to-mono</link><description>
&lt;p&gt;
&lt;b&gt;Question:&lt;/b&gt; Have you got any issues with "Joint-Stereo" MP3's?
I have a customer who sends me the attached MP3 and when I convert it to a mono format, it effectively cancels out the audio.&lt;/p&gt;

&lt;img src="http://alvas.net/Image/JointStereo.png"/&gt;

&lt;p&gt;
&lt;b&gt;Answer:&lt;/b&gt; The problem is that in Mp3 Joint Stereo sound file mirror is opposite. For example the left channel = -1, and the right channel = +1. 
When converting a file into single channels are merged: -1 + 1 = 0. So you hear the silence. 
You can solve this problem in that way. Instead of combining the channels keep only one channel (left or right).&lt;/p&gt;
&lt;p&gt;
The code below solves this problem.&lt;/p&gt;

&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Mp3ToUlaw()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; FileName = &lt;span style="color: #a31515;"&gt;@"d:\Work\10\SBL 6 Year 0511.mp3"&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Mp3Reader&lt;/span&gt; mr = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Mp3Reader&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.OpenRead(FileName));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; formatMp3 = mr.ReadFormat();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; formatPcm = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.GetCompatibleFormat(formatMp3, &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.PcmFormatTag);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] dataMp3 = mr.ReadData();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] dataPcm = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.Convert(formatMp3, formatPcm, dataMp3, &lt;span style="color: blue;"&gt;false&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mr.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; format8000 = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.GetPcmFormat(2, 16, 8000);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] data8000 = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.Resample(formatPcm, dataPcm, format8000);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; formatMono = &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt;.Zero;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] dataLeft = &lt;span style="color: blue;"&gt;null&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] dataRight = &lt;span style="color: blue;"&gt;null&lt;/span&gt;;&lt;/p&gt;
&lt;b&gt;&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.SplitStereo(format8000, data8000, &lt;span style="color: blue;"&gt;ref&lt;/span&gt; formatMono, &lt;span style="color: blue;"&gt;ref&lt;/span&gt; dataLeft, &lt;span style="color: blue;"&gt;ref&lt;/span&gt; dataRight);&lt;/p&gt;
&lt;/b&gt; 
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//mono 8bit 8Khz u-law format&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; format = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.GetCompatibleFormat(formatMono, &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.MuLawFormatTag);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] data = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.Convert(formatMono, format, dataLeft, &lt;span style="color: blue;"&gt;false&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;WaveWriter&lt;/span&gt; ww = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;WaveWriter&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.Create(FileName + &lt;span style="color: #a31515;"&gt;".wav"&lt;/span&gt;),&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.FormatBytes(format));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ww.WriteData(data);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ww.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</description><pubDate>Sun, 12 Jun 2011 07:00:00 GMT</pubDate></item><item><title>Resampling and noise.</title><link>http://www.alvas.net/alvas.audio,articles.aspx#resampling-and-noise</link><description>
&lt;p&gt;
Very often we have to change the sampling rate, number of channels and the size of a sample when converting from one format to another. You can use &lt;b&gt;AudioCompression.Convert&lt;/b&gt; method for these purposes. Unfortunately, for the uncompressed &lt;a class=help target=_blank href="http://en.wikipedia.org/wiki/PCM"&gt;PCM&lt;/a&gt; -&gt; PCM this leads to a significant reduction in sound quality and appearance of extraneous noise. We can verify this by example.&lt;/p&gt;

&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Convert()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
{&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; fileName = &lt;span style="color: #a31515;"&gt;@"Original.WAV"&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; formatNew = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.GetPcmFormat(2, 16, 44100);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; fileNameNew = fileName + &lt;span style="color: #a31515;"&gt;".Convert.Wav"&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;for&lt;/span&gt; (&lt;span style="color: blue;"&gt;int&lt;/span&gt; i = 0; i &amp;lt; 100; i++)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;WaveReader&lt;/span&gt; wr = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;WaveReader&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.OpenRead(fileName));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; format = wr.ReadFormat();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] data = wr.ReadData();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; wr.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] dataNew = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.Convert(format, formatNew, data, &lt;span style="color: blue;"&gt;false&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;WaveWriter&lt;/span&gt; ww = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;WaveWriter&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.Create(fileNameNew),&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.FormatBytes(formatNew));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ww.WriteData(dataNew);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ww.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileName = fileNameNew;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//Previous format&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; formatNew = format;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
}&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;
Fortunately, &lt;a href="http://alvas.net/alvas.audio.aspx"&gt;Alvas.Audio&lt;/a&gt; library has &lt;b&gt;AudioCompression.Resample&lt;/b&gt; method. It is a wrapper over Resampler DMO object.
If we rewrite the code above using AudioCompression.Resample method, we get much better sound quality.&lt;/p&gt;

&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Resample()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
{&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; fileName = &lt;span style="color: #a31515;"&gt;@"Original.WAV"&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; formatNew = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.GetPcmFormat(2, 16, 44100);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; fileNameNew = fileName + &lt;span style="color: #a31515;"&gt;".Resample.Wav"&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;for&lt;/span&gt; (&lt;span style="color: blue;"&gt;int&lt;/span&gt; i = 0; i &amp;lt; 100; i++)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;WaveReader&lt;/span&gt; wr = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;WaveReader&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.OpenRead(fileName));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; format = wr.ReadFormat();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] data = wr.ReadData();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; wr.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] dataNew = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.Resample(format, data, formatNew);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;WaveWriter&lt;/span&gt; ww = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;WaveWriter&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.Create(fileNameNew),&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.FormatBytes(formatNew));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ww.WriteData(dataNew);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ww.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fileName = fileNameNew;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//Previous format&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; formatNew = format;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
}&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;
You can compare the sound of these 3 files.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://alvas.net/Download/Samples/Original.WAV"&gt;Original.WAV&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://alvas.net/Download/Samples/Original.WAV.Convert.Wav"&gt;Original.WAV.Convert.Wav&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://alvas.net/Download/Samples/Original.WAV.Resample.Wav"&gt;GLASS.WAV.Resample.Wav&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
As a bonus AudioCompression.Resample method can encode and decode the &lt;b&gt;PCM 24 and 32 bit, more than 2 channels, and also 32-bit IEEE Float audio format&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;
&lt;b&gt;Summary&lt;/b&gt;: For encode and decode a compressed format to PCM AudioCompression.Convert fits perfectly, but for resampling use AudioCompression.Resample method.&lt;/p&gt;
</description><pubDate>Sun, 12 Jun 2011 07:00:00 GMT</pubDate></item><item><title>Audio Readers.</title><link>http://www.alvas.net/alvas.audio,articles.aspx#audio-readers</link><description>
&lt;ul&gt;
&lt;li&gt;Audio Readers is a hierarchy of &lt;a href="http://alvas.net/alvas.audio.aspx"&gt;Alvas.Audio&lt;/a&gt; classes that implement &lt;b&gt;IAudioReader&lt;/b&gt; interface used to read format and audio data.
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;AudioReader&lt;/b&gt; is a base class for the readers that can read an audio data from the stream. This class is abstract.
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;AuReader&lt;/b&gt; class reads an audio data from the .AU and .SND streams.  
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;AviReader&lt;/b&gt; class reads audio data from the Avi stream.  
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;WaveReader&lt;/b&gt; class reads WAVE (waveform audio format) data from the stream.  
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;RawReader&lt;/b&gt; class reads an audio data from the headerless stream. Slinear, Gsm, A-law, mu-law etc. For that, you need to specify explicitly the format of the audio data that they contain.
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Mp3Reader&lt;/b&gt; class reads audio data from the Mp3 stream.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DsReader&lt;/b&gt; class reads audio data using &lt;a title="DirectShow" href="http://en.wikipedia.org/wiki/DirectShow"&gt;DirectShow&lt;/a&gt;. List of supported formats can be expanded with additional DirectShow filters installed.
Use &lt;a title="Combined Community Codec Pack" href=http://en.wikipedia.org/wiki/Combined_Community_Codec_Pack&gt;Combined_Community_Codec_Pack&lt;/a&gt;, &lt;a title="K-Lite Codec Pack" href=http://en.wikipedia.org/wiki/K-Lite_Codec_Pack&gt;K-Lite_Codec_Pack&lt;/a&gt; or &lt;a title="ffdshow" href=http://en.wikipedia.org/wiki/Ffdshow&gt;Ffdshow&lt;/a&gt; to expand the list of supported formats. 
At the moment, can only work with files stored on disk.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;

&lt;p&gt;
Three methods of &lt;b&gt;IAudioReader&lt;/b&gt; interface most commonly used.&lt;/p&gt;

&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; fileName = &lt;span style="color: #a31515;"&gt;"Your audio file.wav"&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IAudioReader&lt;/span&gt; ir = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;WaveReader&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.OpenRead(fileName));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; format = ir.ReadFormat();&lt;span style="color: green;"&gt;// Reads an audio format.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] data = ir.ReadData();&lt;span style="color: green;"&gt;// Reads all audio data from the stream.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ir.Close();&lt;span style="color: green;"&gt;// Closes the current reader and the underlying stream.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;
To read the audio data portions of 1 second, you can use the following code.&lt;p&gt;

&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; fileName = &lt;span style="color: #a31515;"&gt;"Your audio file.mp3"&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IAudioReader&lt;/span&gt; ir = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Mp3Reader&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.OpenRead(fileName));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; format = ir.ReadFormat();&lt;span style="color: green;"&gt;// Reads an audio format.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;int&lt;/span&gt; skipSeconds = 0;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;const&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; readSeconds = 1;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;while&lt;/span&gt; (&lt;span style="color: blue;"&gt;true&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// Reads audio data starts at skipSeconds position and readSeconds duration.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] data = ir.ReadData(skipSeconds, readSeconds);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (data.Length == 0)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; skipSeconds += readSeconds;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ir.Close();&lt;span style="color: green;"&gt;// Closes the current reader and the underlying stream.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;
To read the audio data by portions that are smaller than 1 second, you can use the following code.&lt;/p&gt;

&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; fileName = &lt;span style="color: #a31515;"&gt;"Your audio file.pcm"&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//Specifies the format of audio data&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; format = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.GetPcmFormat(2, 16, 44100);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IAudioReader&lt;/span&gt; ir = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;RawReader&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.OpenRead(fileName), format);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;const&lt;/span&gt; &lt;span style="color: blue;"&gt;int&lt;/span&gt; miliseconds = 500;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;int&lt;/span&gt; skipBytes = 0;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// Converts from milliseconds to bytes for current stream.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;int&lt;/span&gt; readBytes = ir.Milliseconds2Bytes(miliseconds);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;while&lt;/span&gt; (&lt;span style="color: blue;"&gt;true&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// Reads audio data starts at skipBytes position and readBytes length.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] data = ir.ReadDataInBytes(skipBytes, readBytes);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (data.Length == 0)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; skipBytes += readBytes;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ir.Close();&lt;span style="color: green;"&gt;// Closes the current reader and the underlying stream.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;
The following code allows to determine the audio stream duration in milliseconds and the audio data size in bytes.&lt;/p&gt;

&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; fileName = &lt;span style="color: #a31515;"&gt;"Your audio file.snd"&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IAudioReader&lt;/span&gt; ir = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;AuReader&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.OpenRead(fileName));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// Gets audio stream duration in milliseconds.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;int&lt;/span&gt; durationInMS = ir.GetDurationInMS();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// Gets audio stream length in bytes.&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;int&lt;/span&gt; lengthInBytes = ir.GetLengthInBytes();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ir.Close();&lt;span style="color: green;"&gt;// Closes the current reader and the underlying stream.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;
Avi files are video files. They may not contain audio data. To determine this &lt;b&gt;AviReader&lt;/b&gt; class has &lt;b&gt;HasAudio&lt;/b&gt; property.
&lt;b&gt;DsReader&lt;/b&gt; &lt;b&gt;HasAudio&lt;/b&gt; equal &lt;b&gt;false&lt;/b&gt; means that the file contains no audio data or audio file format is unknown, ie no suitable DirectShow filter.&lt;/p&gt;


&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;using&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;AviReader&lt;/span&gt; ar = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;AviReader&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.OpenRead(&lt;span style="color: #a31515;"&gt;"your.avi"&lt;/span&gt;)))&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (ar.HasAudio)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// ...&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;using&lt;/span&gt; (&lt;span style="color: #2b91af;"&gt;DsReader&lt;/span&gt; dr = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DsReader&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"Your audio file"&lt;/span&gt;))&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (dr.HasAudio)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;// ...&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

Enjoy.
</description><pubDate>Sun, 12 Jun 2011 07:00:00 GMT</pubDate></item><item><title>Audio and File formats.</title><link>http://www.alvas.net/alvas.audio,articles.aspx#audio-and-file-formats</link><description>
&lt;p&gt;
&lt;a target=_blank href="http://en.wikipedia.org/wiki/Audio_file_format"&gt;Audio file formats&lt;/a&gt; can be with a header, without header and with header in each packet of audio data.&lt;/p&gt;

&lt;img border="0" src="image/AudioFormats.png" /&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a target=_blank href="http://en.wikipedia.org/wiki/WAV"&gt;Wav&lt;/a&gt; file is a classic audio format with a header. It is also called &lt;a target=_blank href="http://en.wikipedia.org/wiki/Container_format_(digital)"&gt;container format&lt;/a&gt;, because it may contain an audio data in a different format, which is specified in the header.
&lt;/li&gt;
&lt;li&gt;Headerless(&lt;a target=_blank href="http://en.wikipedia.org/wiki/Raw_audio_format"&gt;Raw audio format&lt;/a&gt;) audio files can contain only audio data. Therefore, we must know exactly the format of the audio data. These files usually have .raw, .sln, .pcm, .alaw, .ulaw, .gsm and other file extensions.
&lt;/li&gt;
&lt;li&gt;&lt;a target=_blank href="http://en.wikipedia.org/wiki/MP3"&gt;MP3&lt;/a&gt; format contains a header in each packet of audio data. Therefore, this format is suitable for broadcasting audio over the network.
&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Sat, 28 May 2011 07:00:00 GMT</pubDate></item><item><title>Asp.Net Audio Converter</title><link>http://www.alvas.net/alvas.audio,articles.aspx#aspnet-audio-converter</link><description>
Converts audio files with &lt;a href="http://alvas.net/alvas.audio.aspx"&gt;Alvas.Audio&lt;/a&gt; 
in Asp.Net application as easy as in Windows Forms, WPF, Windows Service and Console Apps. You need 
&lt;ol&gt;
&lt;li&gt; Upload audio file. &lt;/li&gt;
&lt;li&gt; Select your audio file from list on the server. &lt;/li&gt;
&lt;li&gt; Select audio format from list with available audio formats.&lt;/li&gt;
&lt;li&gt; Press “Convert” button and download result audio file.&lt;/li&gt;
&lt;/ol&gt;

&lt;img border="0" height="250" width="430" src="Image/AspNetAudioConverter.png" /&gt;

&lt;p&gt;You can see &lt;a href="http://demo.alvas.net/"&gt;online demo&lt;/a&gt; and 
&lt;a href="Download/Samples/AlvasAudioWeb.zip"&gt;example code&lt;/a&gt; and 
&lt;a href="Download/Alvas.Audio.zip"&gt;Alvas.Audio&lt;/a&gt;.&lt;/p&gt;
</description><pubDate>Fri, 27 May 2011 07:00:00 GMT</pubDate></item><item><title>Alvas.Audio and WPF.</title><link>http://www.alvas.net/alvas.audio,articles.aspx#alvasaudio-and-wpf</link><description>
To use Windows Forms controls in &lt;a href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation"&gt;Windows Presentation Foundation(WPF&lt;/a&gt;) applications you need:
&lt;ol&gt;
&lt;li&gt;To create RecorderEx or PlayerEx use a constructor with a parameter &lt;b&gt;isConsole = true&lt;/b&gt;. Example: new RecorderEx (true); or PlayerEx (true);&lt;/li&gt;
&lt;li&gt;Add reference to WindowsFormsIntegration assembly (in &lt;b&gt;WindowsFormsIntegration.dll&lt;/b&gt;) to your project.&lt;/li&gt;
&lt;li&gt;Add reference to System.Windows.Forms assembly (in &lt;b&gt;System.Windows.Forms.dll&lt;/b&gt;) to your project.&lt;/li&gt;
&lt;li&gt;In the Window element, add the following namespace mapping 

&lt;div class=code&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
xmlns:wf=&lt;span style="color: #a31515;"&gt;&amp;quot;clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

in Window1.xaml. The wf namespace mapping establishes a reference to the assembly that contains the Windows Forms control.&lt;/li&gt;
&lt;li&gt;Place &lt;b&gt;WindowsFormsHost&lt;/b&gt; container with our control. For example,  &lt;b&gt;PropertyGrid&lt;/b&gt;

&lt;div class=code&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
&amp;lt;WindowsFormsHost Grid.Row=&lt;span style="color: #a31515;"&gt;&amp;quot;1&amp;quot;&lt;/span&gt; Grid.Column=&lt;span style="color: #a31515;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; &amp;gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;wf:PropertyGrid x:Name=&lt;span style="color: #a31515;"&gt;&amp;quot;pgMain&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;lt;/WindowsFormsHost&amp;gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;You can add control into WindowsFormsHost container in run-time:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Place empty &lt;b&gt;WindowsFormsHost&lt;/b&gt; container to our Window1.xaml

&lt;div class=code&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
&amp;lt;WindowsFormsHost Name=&lt;span style="color: #a31515;"&gt;&amp;quot;wfh&amp;quot;&lt;/span&gt; Grid.Row=&lt;span style="color: #a31515;"&gt;&amp;quot;1&amp;quot;&lt;/span&gt; Grid.Column=&lt;span style="color: #a31515;"&gt;&amp;quot;1&amp;quot;&lt;/span&gt; &amp;gt;&amp;lt;/WindowsFormsHost&amp;gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;and create &lt;b&gt;WaveformVisualizer&lt;/b&gt; (from &lt;b&gt;Alvas.Audio.dll&lt;/b&gt;) control and place it to &lt;b&gt;WindowsFormsHost&lt;/b&gt; container in run-time

&lt;div class=code&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; InitWaveformVisualizer()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
{&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; wfv = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;WaveformVisualizer&lt;/span&gt;();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; wfh.Child = wfv;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
}&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;WaveformVisualizer&lt;/span&gt; wfv;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
Full-featured examples in C# and VB.Net (WpfCs and WpfVb projects) you can see in &lt;a href="http://alvas.net/Download/Alvas.Audio.zip"&gt;Alvas.Audio Demos&lt;/a&gt;
</description><pubDate>Wed, 11 May 2011 07:00:00 GMT</pubDate></item><item><title>2011-04-04 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published.&lt;br&gt;
&lt;br&gt;New features:
&lt;ol type="square"&gt;
&lt;li&gt;Supports x64 mode on 64-bit operating systems.
&lt;li&gt;WaveformVisualizer draws picture of the sound amplitude-time representation (Waveform).
&lt;li&gt;Removes DC offset. DC offset is an offsetting of a signal from zero. Occurs when hardware, such as a sound card, adds DC offset to a recorded audio signal.
&lt;li&gt;AuReader reads an audio data from the .AU and .SND streams. 
&lt;li&gt;ToFormat method converts audio data to the specified audio format.
&lt;li&gt;Normalize method raises the volume so that the highest sample level reaches a maximum level.
&lt;li&gt;Swaps stereo channels.
&lt;li&gt;Inverts the audio signal to 180 degrees. All positive values in the wave form are replaced by negative and vice versa.
&lt;li&gt;Frees memory previously allocated for audio format. 
&lt;li&gt;Creates 32-bit IEEE Float audio format.
&lt;li&gt;Performs resampling audio data from and to 8/16/24/32-bit integer PCM and 32-bit IEEE Float audio formats.
&lt;li&gt;Windows Presentation Foundation (WPF) example
&lt;/ol&gt;
</description><pubDate>Mon, 4 Apr 2011 07:00:00 GMT</pubDate></item><item><title>2011-01-09 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published.&lt;br&gt;
&lt;br&gt;New features:
&lt;ol type="square"&gt;
&lt;li&gt; Support audio filters such as Chorus, Compressor, Distortion, Echo, Flanger, Gargle, I3DL2Reverb, ParamEq, WavesReverb.
&lt;li&gt; Helper for converting Mp3 file to Wav file with PCM (Pulse-code modulation) data
&lt;li&gt; Helper for decoding audio data in PCM (Pulse-code modulation).
&lt;li&gt; Helper for decoding audio data in PCM (Pulse-code modulation) 16 bit
&lt;li&gt; Create fade in/out effect
&lt;li&gt; Create silence
&lt;li&gt; Allows to work SoundLevelMeter and RecordPlayer together
&lt;/ol&gt;
</description><pubDate>Sun, 9 Jan 2011 08:00:00 GMT</pubDate></item><item><title>How to save audio to mp3 on Silverlight 4.</title><link>http://www.alvas.net/alvas.audio,articles.aspx#how-to-save-audio-to-mp3-on-silverlight</link><description>
As you know Silverlight 4 supports access to the microphone. Besides it can call COM objects on the client side. 
&lt;br/&gt;&lt;br/&gt;
To save the audio in mp3 format we need: 

&lt;ol type="I"&gt;
&lt;li&gt; Make the COM object wrapper, which allows us to invoke the necessary Alvas.Audio functionality. 
&lt;ol&gt;
&lt;li&gt; Create AlvasCom project as ClassLibrary. 

&lt;li&gt; In AssemblyInfo.cs change the line 
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
[assembly: ComVisible(&lt;span style="color: blue;"&gt;false&lt;/span&gt;)]&lt;/p&gt;
&lt;/div&gt;
to 
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
[assembly: ComVisible(&lt;span style="color: blue;"&gt;true&lt;/span&gt;)]&lt;/p&gt;
&lt;/div&gt;

&lt;li&gt; Add a reference to Alvas.Audio.dll 

&lt;li&gt; Add Alvas.Audio-wrapper interface and its implementation. See the code below. 
&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;pre style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; AlvasCom&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;{&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;Guid&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"50B29476-F2C0-4445-B0E1-7D4023453EBD"&lt;/span&gt;)]&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;interface&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;IAudioHost&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Close();&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;void&lt;/span&gt; WriteData(&lt;span style="color: blue;"&gt;short&lt;/span&gt; channels, &lt;span style="color: blue;"&gt;short&lt;/span&gt; bitsPerSample, &lt;span style="color: blue;"&gt;int&lt;/span&gt; samplesPerSec, &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] sampleData);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;ClassInterface&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;ClassInterfaceType&lt;/span&gt;.None)]&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style="color: #2b91af;"&gt;Guid&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"1EA86BAE-420F-4309-BF06-23730718BF5E"&lt;/span&gt;)]&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;AudioHost&lt;/span&gt; : &lt;span style="color: #2b91af;"&gt;IAudioHost&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;Mp3Writer&lt;/span&gt; mw;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; AudioHost()&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; dir = &lt;span style="color: #2b91af;"&gt;Environment&lt;/span&gt;.GetFolderPath(&lt;span style="color: #2b91af;"&gt;Environment&lt;/span&gt;.&lt;span style="color: #2b91af;"&gt;SpecialFolder&lt;/span&gt;.MyMusic);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; fileName = &lt;span style="color: #2b91af;"&gt;Path&lt;/span&gt;.ChangeExtension(&lt;span style="color: #2b91af;"&gt;Path&lt;/span&gt;.GetFileName(&lt;span style="color: #2b91af;"&gt;Path&lt;/span&gt;.GetTempFileName()), &lt;span style="color: #a31515;"&gt;".mp3"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; path = &lt;span style="color: #2b91af;"&gt;Path&lt;/span&gt;.Combine(dir, fileName);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;global&lt;/span&gt;::System.Windows.Forms.&lt;span style="color: #2b91af;"&gt;MessageBox&lt;/span&gt;.Show(path);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mw = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Mp3Writer&lt;/span&gt;(&lt;span style="color: #2b91af;"&gt;File&lt;/span&gt;.Create(path));&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; WriteData(&lt;span style="color: blue;"&gt;short&lt;/span&gt; channels, &lt;span style="color: blue;"&gt;short&lt;/span&gt; bitsPerSample, &lt;span style="color: blue;"&gt;int&lt;/span&gt; samplesPerSec, &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] sampleData)&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; sampleFormat = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.GetPcmFormat(channels, bitsPerSample, samplesPerSec);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af;"&gt;IntPtr&lt;/span&gt; format = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.GetCompatibleFormat(sampleFormat, &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.MpegLayer3FormatTag);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] data = &lt;span style="color: #2b91af;"&gt;AudioCompressionManager&lt;/span&gt;.Convert(sampleFormat, format, sampleData, &lt;span style="color: blue;"&gt;false&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mw.WriteData(data);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Close()&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mw.Close();&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;li&gt; Sign the assembly with the snk file. 

&lt;li&gt; Register in GAC AlvasCom.dll and Alvas.Audio.dll using gacutil. 

&lt;li&gt; Register the COM object using regasm.
&lt;/ol&gt;
&lt;br/&gt;
&lt;i&gt;You can find AlvasCom.bat  in the "SilverlightAudio\AlvasCom\bin\Debug\" folder to register these libraries.&lt;/i&gt;
&lt;br/&gt;&lt;br/&gt;
&lt;li&gt; Make the Silverlight application with microphone support.
&lt;ol&gt;
&lt;li&gt; Create SilverlightAudio project as SilverlightApplication.

&lt;li&gt; To call a COM object, we need elevated privileges and run it out of browser. Add to OutOfBrowserSettings.xml 

&lt;pre&gt;&lt;font style="font: 10pt Fixedsys; color: #000000; "&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font style="font: 10pt Fixedsys; color: #800080; "&gt;&amp;lt;OutOfBrowserSettings.SecuritySettings&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;SecuritySettings&amp;nbsp;&lt;/font&gt;&lt;font style="font: 10pt Fixedsys; color: #FF0000; "&gt;ElevatedPermissions&lt;/font&gt;&lt;font style="font: 10pt Fixedsys; color: #3A6EA5; "&gt;=&amp;quot;Required&amp;quot;&amp;nbsp;&lt;/font&gt;&lt;font style="font: 10pt Fixedsys; color: #800080; "&gt;/&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;lt;/OutOfBrowserSettings.SecuritySettings&amp;gt;&lt;/font&gt;&lt;/pre&gt;

&lt;li&gt; Writing code call using the "dynamic" type
&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;pre style="margin: 0px;"&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; SilverlightAudio&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;{&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;class&lt;/span&gt; MyAudioSync : AudioSink&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;dynamic&lt;/span&gt; ah;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; AudioFormat audioFormat;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnCaptureStarted()&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ah = AutomationFactory.CreateObject(&lt;span style="color: #a31515;"&gt;"AlvasCom.AudioHost"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnCaptureStopped()&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ah.Close();&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnFormatChange(AudioFormat audioFormat)&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;this&lt;/span&gt;.audioFormat = audioFormat;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;protected&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; OnSamples(&lt;span style="color: blue;"&gt;long&lt;/span&gt; sampleTime, &lt;span style="color: blue;"&gt;long&lt;/span&gt; sampleDuration, &lt;span style="color: blue;"&gt;byte&lt;/span&gt;[] sampleData)&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ah.WriteData((&lt;span style="color: blue;"&gt;short&lt;/span&gt;)audioFormat.Channels, (&lt;span style="color: blue;"&gt;short&lt;/span&gt;)audioFormat.BitsPerSample, audioFormat.SamplesPerSecond, sampleData);&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;
&lt;pre style="margin: 0px;"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;li&gt; Compile and run the application. 

&lt;li&gt; Enjoy. 
&lt;/ol&gt;
&lt;/ol&gt;

&lt;i&gt;The source code and precompiled examples are here. (&lt;a href="http://alvas.net/Download/Samples/SilverlightAudio.zip"&gt;SilverlightAudio.zip&lt;/a&gt;)&lt;/i&gt;
&lt;br/&gt;&lt;br/&gt;
How can we extend this example? Come immediately to mind 
&lt;ol&gt;
&lt;li&gt;Save mp3 file on the server. 
&lt;li&gt;Make voice chat, but it is better to use gsm instead of mp3 encoding. How to do it - leave it in the form of homework. Hint &lt;a href="http://alvas.net/alvas.audio,tips.aspx#tip60"&gt;#tip60&lt;/a&gt; :)
&lt;li&gt;And what can you propose? 
&lt;/ol&gt;

P.S. If you have any problems - please &lt;a href="mailto: alvas@alvas.net?Subject=SL4+Alvas.Audio"&gt;write us&lt;/a&gt;.
&lt;br/&gt;
</description><pubDate>Sun, 28 Feb 2010 08:00:00 GMT</pubDate></item><item><title>ID3 tags for Wave files.</title><link>http://www.alvas.net/alvas.audio,articles.aspx#id3-tags-for-wave-files</link><description>
ID3 (Identify a MP3) is metadata container most often used for MP3 audio files. ID3 signature contains information about the title track, album, artist name, etc. about the file to be stored in the file itself. Please see &lt;a class=help target=_blank title='ID3' href="http://en.wikipedia.org/wiki/ID3"&gt;ID3&lt;/a&gt;.
&lt;br/&gt;
Wave files can also store metadata similar ID3.
&lt;br/&gt;&lt;br/&gt;
The code below shows how to add, delete, and read metadata from the Wav files.

&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; WaveTag()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; fileName = &lt;span style="color: maroon;"&gt;"in.wav"&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;WaveReadWriter&lt;/span&gt; wrw = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;WaveReadWriter&lt;/span&gt;(&lt;span style="color: teal;"&gt;File&lt;/span&gt;.Open(fileName, &lt;span style="color: teal;"&gt;FileMode&lt;/span&gt;.Open, &lt;span style="color: teal;"&gt;FileAccess&lt;/span&gt;.ReadWrite));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//removes INFO tags from audio stream &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; wrw.WriteInfoTag(&lt;span style="color: blue;"&gt;null&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//writes INFO tags into audio stream &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: teal;"&gt;WaveInfo&lt;/span&gt;, &lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; tag = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: teal;"&gt;WaveInfo&lt;/span&gt;, &lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt;();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tag[&lt;span style="color: teal;"&gt;WaveInfo&lt;/span&gt;.Comments] = &lt;span style="color: maroon;"&gt;"Comments..."&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; wrw.WriteInfoTag(tag);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; wrw.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//reads INFO tags from audio stream&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;WaveReader&lt;/span&gt; wr = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;WaveReader&lt;/span&gt;(&lt;span style="color: teal;"&gt;File&lt;/span&gt;.OpenRead(fileName));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: teal;"&gt;WaveInfo&lt;/span&gt;, &lt;span style="color: blue;"&gt;string&lt;/span&gt;&amp;gt; dir = wr.ReadInfoTag();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; wr.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (dir.Count &amp;gt; 0)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue;"&gt;string&lt;/span&gt; val &lt;span style="color: blue;"&gt;in&lt;/span&gt; dir.Values)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;Console&lt;/span&gt;.WriteLine(val);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

In addition, we show how to do the same for mp3 files with ID3 Tag V1.0

&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Mp3Tag()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; fileName = &lt;span style="color: maroon;"&gt;"in.mp3"&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;Mp3ReadWriter&lt;/span&gt; mrw = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;Mp3ReadWriter&lt;/span&gt;(&lt;span style="color: teal;"&gt;File&lt;/span&gt;.Open(fileName, &lt;span style="color: teal;"&gt;FileMode&lt;/span&gt;.Open, &lt;span style="color: teal;"&gt;FileAccess&lt;/span&gt;.ReadWrite));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//removes ID3v1 tags from audio stream &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mrw.WriteID3v1Tag(&lt;span style="color: blue;"&gt;null&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//writes ID3v1 tags into audio stream &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;ID3v1&lt;/span&gt; tag = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;ID3v1&lt;/span&gt;();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tag.Comment = &lt;span style="color: maroon;"&gt;"Comment..."&lt;/span&gt;;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mrw.WriteID3v1Tag(tag);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mrw.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;//reads ID3v1 tags from audio stream &lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;Mp3Reader&lt;/span&gt; mr = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;Mp3Reader&lt;/span&gt;(&lt;span style="color: teal;"&gt;File&lt;/span&gt;.OpenRead(fileName));&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;ID3v1&lt;/span&gt; id3v1 = mr.ReadID3v1Tag();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mr.Close();&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (id3v1 != &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;Console&lt;/span&gt;.WriteLine(id3v1.Comment);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

</description><pubDate>Mon, 15 Feb 2010 08:00:00 GMT</pubDate></item><item><title>What is ACM driver?</title><link>http://www.alvas.net/alvas.audio,articles.aspx#what-is-acm-driver</link><description>
Audio Compression Manager (ACM) is the Windows multimedia framework that manages audio codecs. Codec is a computer program that compresses/decompresses digital audio data according to a given audio file format or streaming audio format.
&lt;br/&gt;ACM driver is dynamic-link library (DLL) which contains audio codecs for different audio formats. 
&lt;br/&gt;ACM drivers can be recognized by their filename extension ".acm". For more details please see &lt;a class=help target=_blank title='Audio Compression Manager' href="http://en.wikipedia.org/wiki/Audio_Compression_Manager"&gt;Audio Compression Manager&lt;/a&gt;
&lt;br/&gt;&lt;br/&gt;
The code below can be used to list ACM codecs installed on your computer and see audio formats for specified codec.

&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; WhatIsAcmDriver()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color: teal;"&gt;DriverDetails&lt;/span&gt; dd &lt;span style="color: blue;"&gt;in&lt;/span&gt; &lt;span style="color: teal;"&gt;AudioCompressionManager&lt;/span&gt;.GetDriverList())&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: maroon;"&gt;"# # #"&lt;/span&gt;);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: maroon;"&gt;"Driver: {0}"&lt;/span&gt;, dd.LongName);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color: teal;"&gt;FormatTagDetails&lt;/span&gt; ftd &lt;span style="color: blue;"&gt;in&lt;/span&gt; &lt;span style="color: teal;"&gt;AudioCompressionManager&lt;/span&gt;.GetFormatTagList(dd.Driver))&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: maroon;"&gt;"FormatTag: {0}"&lt;/span&gt;, ftd.FormatTagName);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color: teal;"&gt;FormatDetails&lt;/span&gt; fd &lt;span style="color: blue;"&gt;in&lt;/span&gt; &lt;span style="color: teal;"&gt;AudioCompressionManager&lt;/span&gt;.GetFormatList(ftd.FormatTag, dd.Driver))&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: maroon;"&gt;"Format: {0}"&lt;/span&gt;, fd.FormatName);&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

Output for "Microsoft GSM 6.10 Audio CODEC" (for example) driver see below
&lt;pre&gt;
# # #
Driver: Microsoft GSM 6.10 Audio CODEC
FormatTag: GSM 6.10
Format: 8,000 kHz; Mono
Format: 11,025 kHz; Mono
Format: 22,050 kHz; Mono
Format: 44,100 kHz; Mono
FormatTag: PCM
Format: 8,000 kHz; 8 Bit; Mono
Format: 8,000 kHz; 16 Bit; Mono
Format: 11,025 kHz; 8 Bit; Mono
Format: 11,025 kHz; 16 Bit; Mono
Format: 22,050 kHz; 8 Bit; Mono
Format: 22,050 kHz; 16 Bit; Mono
Format: 44,100 kHz; 8 Bit; Mono
Format: 44,100 kHz; 16 Bit; Mono
# # #
&lt;/pre&gt;
</description><pubDate>Mon, 15 Feb 2010 08:00:00 GMT</pubDate></item><item><title>How can be one audio file mixed to another?</title><link>http://www.alvas.net/alvas.audio,articles.aspx#how-can-be-mixed-one-audio-file-to</link><description>
&lt;b&gt;Question:&lt;/b&gt; I have multiple audio tracks with nothing but music.
&lt;br/&gt;I have multiple recorded voice tracks no longer than 2-3 seconds each.
&lt;br/&gt;What I would like to do is 'overlay' a voice track onto an audio
track at a specified time and output the results to a single file.
&lt;br/&gt;E.g. Audio track is 2 minutes long, and I would like to insert
the voice track at 23 seconds as well 1m 05 seconds and at 1m 40 seconds.
&lt;br/&gt;Can Alvas.Audio accomplish this sort of task for me??
&lt;br/&gt;&lt;br/&gt;
&lt;b&gt;Answer:&lt;/b&gt; See the code below

&lt;div class="code"&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;Imports&lt;/span&gt; System.IO&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;Imports&lt;/span&gt; Alvas.Audio&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;Public&lt;/span&gt; &lt;span style="color: blue;"&gt;Class&lt;/span&gt; Form1&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Private&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt; Button1_Click(&lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; sender &lt;span style="color: blue;"&gt;As&lt;/span&gt; System.Object, &lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; e &lt;span style="color: blue;"&gt;As&lt;/span&gt; System.EventArgs) &lt;span style="color: blue;"&gt;Handles&lt;/span&gt; Button1.Click&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MixMany(&lt;span style="color: maroon;"&gt;"c:\audio\files\"&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Private&lt;/span&gt; &lt;span style="color: blue;"&gt;Shared&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt; Debug(&lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; name &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;String&lt;/span&gt;, &lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; wf &lt;span style="color: blue;"&gt;As&lt;/span&gt; WaveFormat)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; format &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;String&lt;/span&gt; = &lt;span style="color: maroon;"&gt;"Variable: [{0}], FormatTag: {1}, Channels: {2}, SamplesPerSec: {3}, BitsPerSample: {4}, BlockAlign: {5}, AvgBytesPerSec: {6}"&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(format, name, wf.wFormatTag, wf.nChannels, wf.nSamplesPerSec, wf.wBitsPerSample, wf.nBlockAlign, wf.nAvgBytesPerSec)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Private&lt;/span&gt; &lt;span style="color: blue;"&gt;Shared&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt; MixMany(&lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; dir &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;String&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; format1 &lt;span style="color: blue;"&gt;As&lt;/span&gt; IntPtr&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; data1 &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Byte&lt;/span&gt;()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReadData(dir + &lt;span style="color: maroon;"&gt;"The Friendship Song.mp3"&lt;/span&gt;, format1, data1)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; format2 &lt;span style="color: blue;"&gt;As&lt;/span&gt; IntPtr&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; data2 &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Byte&lt;/span&gt;()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ReadData(dir + &lt;span style="color: maroon;"&gt;"Kailin 1.mp3"&lt;/span&gt;, format2, data2)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; wf1 &lt;span style="color: blue;"&gt;As&lt;/span&gt; WaveFormat = AudioCompressionManager.GetWaveFormat(format1)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Debug(&lt;span style="color: maroon;"&gt;"wf1"&lt;/span&gt;, wf1)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; wf2 &lt;span style="color: blue;"&gt;As&lt;/span&gt; WaveFormat = AudioCompressionManager.GetWaveFormat(format2)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Debug(&lt;span style="color: maroon;"&gt;"wf1"&lt;/span&gt;, wf2)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;If&lt;/span&gt; &lt;span style="color: blue;"&gt;Not&lt;/span&gt; wf1.Equals(wf2) &lt;span style="color: blue;"&gt;Then&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; data2 = AudioCompressionManager.Convert(format2, format1, data2, &lt;span style="color: blue;"&gt;False&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;If&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; data &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Byte&lt;/span&gt;() = AudioCompressionManager.MixMany(format1, data1, data2, wf1.nSamplesPerSec * 27.1, wf1.nSamplesPerSec * 83.28)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; formatMp3 &lt;span style="color: blue;"&gt;As&lt;/span&gt; IntPtr = AudioCompressionManager.GetCompatibleFormat(format1, AudioCompressionManager.MpegLayer3FormatTag)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Debug(&lt;span style="color: maroon;"&gt;"wfMp3"&lt;/span&gt;, AudioCompressionManager.GetWaveFormat(formatMp3))&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; dataMp3 &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Byte&lt;/span&gt;() = AudioCompressionManager.Convert(format1, formatMp3, data, &lt;span style="color: blue;"&gt;False&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; mw &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;New&lt;/span&gt; Mp3Writer(File.Create(dir + &lt;span style="color: maroon;"&gt;"Test002.mp3"&lt;/span&gt;))&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mw.WriteData(dataMp3)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mw.Close()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox(&lt;span style="color: maroon;"&gt;"Done!"&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Private&lt;/span&gt; &lt;span style="color: blue;"&gt;Shared&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt; ReadData(&lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; fileName &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;String&lt;/span&gt;, &lt;span style="color: blue;"&gt;ByRef&lt;/span&gt; format1 &lt;span style="color: blue;"&gt;As&lt;/span&gt; IntPtr, &lt;span style="color: blue;"&gt;ByRef&lt;/span&gt; data1 &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Byte&lt;/span&gt;())&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; dr1 &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;New&lt;/span&gt; Mp3Reader(File.OpenRead(fileName))&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; format1 = dr1.ReadFormat()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; data1 = dr1.ReadData()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; dr1.Close()&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; format1Pcm &lt;span style="color: blue;"&gt;As&lt;/span&gt; IntPtr = AudioCompressionManager.GetCompatibleFormat(format1, AudioCompressionManager.PcmFormatTag)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; data1Pcm() &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Byte&lt;/span&gt; = AudioCompressionManager.Convert(format1, format1Pcm, data1, &lt;span style="color: blue;"&gt;False&lt;/span&gt;)&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; format1 = format1Pcm&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; data1 = data1Pcm&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Sub&lt;/span&gt;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p style="margin: 0px;"&gt;
&lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Class&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;

</description><pubDate>Mon, 15 Feb 2010 08:00:00 GMT</pubDate></item><item><title>2010-02-01 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published.&lt;br&gt;
&lt;br&gt;New features:
&lt;ol type="square"&gt;
&lt;li&gt; Writes ID3 tag version 1 from MPEG Layer3 streams.
&lt;li&gt; Writes INFO metadata(similar mp3 tags) from Wave streams.
&lt;li&gt; Checks audio signal silence.
&lt;/ol&gt;
</description><pubDate>Mon, 1 Feb 2010 08:00:00 GMT</pubDate></item><item><title>What is compressed audio format?</title><link>http://www.alvas.net/alvas.audio,articles.aspx#what-is-compressed-audio-format</link><description>
&lt;div&gt;
Audio compression is a kind of data compression developed to reduce the transmission bandwidth of digital sound streams
and the size of audio files. Audio compression algorithms are applied in computer software as audio codecs. The compromise
between a little reduced sound quality and transmission or size is outweighed by the last for most practical audio apps in which
users may not feel the loss in playback rendition quality.
&lt;/div&gt;
&lt;div&gt;
For instance, one compact disk (CD) contains about one hour of uncompressed (&lt;a href="#what-is-pcm-format"&gt;PCM&lt;/a&gt;) high quality music, 
less than 2 hours of music compressed without loss in playback, or 7 hours of music compressed in the MP3 format at medium bit rates.
&lt;/div&gt;
&lt;br/&gt;
&lt;div&gt;
Lets analyse compressed audio format, for instance, "GSM 6.10". This format is applied to compress the mobile operators speaking on cellular.
GSM is applied for over 3 billion people in more than 212 countries and territories.
&lt;/div&gt;
&lt;br/&gt;
&lt;div&gt;
&lt;strong&gt;AudioCompressionManager.GetWaveFormat&lt;/strong&gt; can analyse the audio format inside.
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;FormatTag&lt;/strong&gt; = 49 is "GSM 6.10" format.
&lt;li&gt;&lt;strong&gt;Channels&lt;/strong&gt; = 1 is single-channel.
&lt;li&gt;&lt;strong&gt;SamplesPerSec&lt;/strong&gt; = quantity of digitized values per second (or sampling): 8000 Hz, 11025 Hz, 22050 Hz, 44100 Hz.
&lt;li&gt;&lt;strong&gt;BitsPerSample&lt;/strong&gt; = 0, unimportant for this format.
&lt;li&gt;&lt;strong&gt;BlockAlign&lt;/strong&gt; = 65. The size of the compressed block (in bytes).
&lt;li&gt;&lt;strong&gt;AvgBytesPerSec&lt;/strong&gt; is byterate(Bitrate equal byterate * 8) = 1625. For "GSM 6.10 22050 Hz; Mono".
&lt;/ul&gt;
You can use the code below to look through "GSM 6.10" audio format in more detail.
&lt;/div&gt;

&lt;div class=code&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; WhatIsCompressedAudioFormat()&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;foreach&lt;/span&gt; (&lt;span style="color: teal;"&gt;FormatDetails&lt;/span&gt; fd &lt;span style="color: blue;"&gt;in&lt;/span&gt; &lt;span style="color: teal;"&gt;AudioCompressionManager&lt;/span&gt;.GetFormatList(&lt;span style="color: teal;"&gt;AudioCompressionManager&lt;/span&gt;.Gsm610FormatTag, &lt;span style="color: blue;"&gt;true&lt;/span&gt;))&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;WaveFormat&lt;/span&gt; wf = &lt;span style="color: teal;"&gt;AudioCompressionManager&lt;/span&gt;.GetWaveFormat(fd.FormatHandle);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; format = &lt;span style="color: maroon;"&gt;"Format: [{0}], FormatTag: {1}, Channels: {2}, SamplesPerSec: {3}, BitsPerSample: {4}, BlockAlign: {5}, AvgBytesPerSec: {6}"&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;Console&lt;/span&gt;.WriteLine(format, fd, wf.wFormatTag, wf.nChannels, wf.nSamplesPerSec, wf.wBitsPerSample, wf.nBlockAlign, wf.nAvgBytesPerSec);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
</description><pubDate>Thu, 7 Jan 2010 08:00:00 GMT</pubDate></item><item><title>What is a PCM format?</title><link>http://www.alvas.net/alvas.audio,articles.aspx#what-is-pcm-format</link><description>
&lt;div&gt;PCM (Pulse-code modulation) is an uncompressed audio format. 
We get the Wav file, that maintains (holds) the PCM data.
See how to do &lt;a href="#what-is-wave-file"&gt;What is a Wav-file?&lt;/a&gt; 
Method &lt;b&gt;AudioCompressionManager.GetWaveFormat&lt;/b&gt; helps investigate  the audio format. &lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;FormatTag &lt;/b&gt;= 1 is PCM. &lt;/li&gt;
&lt;li&gt;&lt;b&gt;Channels&lt;/b&gt; = for single-channel (mono), two-channel (stereo), 8 for 7.1 Surround Sound (left, right, center, left surround, 
right surround, left rear, right rear positions. 7.1 systems also have 1 channel for low frequency effects (LFE) which is usually sent to a subwoofer). &lt;/li&gt;
&lt;li&gt;&lt;b&gt;SamplesPerSec&lt;/b&gt; = digitized quantity values per second (or sampling). Could be anything, but the standard values: 8000 Hz, 11025 Hz, 
12000 Hz, 16000 Hz, 22050 Hz, 24000 Hz, 32000 Hz, 44100 Hz, 48000 Hz. &lt;/li&gt;
&lt;li&gt;&lt;b&gt;BitsPerSample&lt;/b&gt; - most common uses 8 bits (1 byte) and 16 bits (2 bytes). Rarely 24 bits (3 bytes), 32 bits (4 bytes) and 64 bits (4 bytes). 
If we consider the 16 bit as a basic, then 8 bits can be considered as a compressed format. It has two times less size, 
but the variants of values can be only 2&lt;sup&gt;8&lt;/sup&gt; = 256 instead of 2&lt;sup&gt;16&lt;/sup&gt; = 65536 for 16 bits. That's why, 8 bits sound quality will be 
significantly lower than 16 bits. &lt;/li&gt;
&lt;li&gt;&lt;b&gt;BlockAlign&lt;/b&gt; = Channels * BitsPerSample / 8. Where 8 is the quantity of bits per byte.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;AvgBytesPerSec&lt;/b&gt; (bitrate) = Channels * SamplesPerSec * BitsPerSample / 8.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;You can use the code below to analyze PCM audio format in more particularly.&lt;/div&gt;
&lt;div class=code&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; WhatIsPcmFormat(&lt;span style="color: blue;"&gt;string&lt;/span&gt; fileName)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;WaveReader&lt;/span&gt; wr = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;WaveReader&lt;/span&gt;(&lt;span style="color: teal;"&gt;File&lt;/span&gt;.OpenRead(fileName));&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;IntPtr&lt;/span&gt; format = wr.ReadFormat();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; wr.Close();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;WaveFormat&lt;/span&gt; wf = &lt;span style="color: teal;"&gt;AudioCompressionManager&lt;/span&gt;.GetWaveFormat(format);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; (wf.wFormatTag == &lt;span style="color: teal;"&gt;AudioCompressionManager&lt;/span&gt;.PcmFormatTag)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;int&lt;/span&gt; bitsPerByte = 8;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: maroon;"&gt;"Channels: {0}, SamplesPerSec: {1}, BitsPerSample: {2}, BlockAlignIsEqual: {3}, BytesPerSecIsEqual: {4}"&lt;/span&gt;, wf.nChannels, wf.nSamplesPerSec, wf.wBitsPerSample, (wf.nChannels * wf.wBitsPerSample) / bitsPerByte == wf.nBlockAlign, (&lt;span style="color: blue;"&gt;int&lt;/span&gt;)(wf.nChannels * wf.nSamplesPerSec * wf.wBitsPerSample) / bitsPerByte == wf.nAvgBytesPerSec);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
</description><pubDate>Wed, 30 Dec 2009 08:00:00 GMT</pubDate></item><item><title>What is a Wav-file?</title><link>http://www.alvas.net/alvas.audio,articles.aspx#what-is-wave-file</link><description>
&lt;div&gt;WAVE (WAV) is a &lt;a class=help target=_blank href="http://en.wikipedia.org/wiki/Container_format_(digital)"&gt;container format&lt;/a&gt; for recording the digitized audio stream. Under Windows, this format is often 
applied as a wrapper for uncompressed audio (PCM). But, you can put sound in WAV container compressed perhaps in any codec. &lt;/div&gt;
&lt;div&gt;In that way your WAV-file can maintain data in various audio formats, such as the CCITT A-Law, CCITT u-Law, ADPCM, Speex, GSM 6.10, MPEG Layer-3 (mp3), Ogg Vorbis and others.&lt;/div&gt;
&lt;div&gt;You can use the code below to investigate audio-format data recorded in your WAV-file.&lt;/div&gt;
&lt;div class=code&gt;
&lt;div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;private&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; WhatIsWavFile(&lt;span style="color: blue;"&gt;string&lt;/span&gt; fileName)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;WaveReader&lt;/span&gt; wr = &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: teal;"&gt;WaveReader&lt;/span&gt;(&lt;span style="color: teal;"&gt;File&lt;/span&gt;.OpenRead(fileName));&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;IntPtr&lt;/span&gt; format = wr.ReadFormat();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; wr.Close();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;WaveFormat&lt;/span&gt; wf = &lt;span style="color: teal;"&gt;AudioCompressionManager&lt;/span&gt;.GetWaveFormat(format);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;string&lt;/span&gt; tag = &lt;span style="color: blue;"&gt;null&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;switch&lt;/span&gt; (wf.wFormatTag)&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: teal;"&gt;AudioCompressionManager&lt;/span&gt;.PcmFormatTag :&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tag = &lt;span style="color: maroon;"&gt;"PCM"&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: teal;"&gt;AudioCompressionManager&lt;/span&gt;.ALawFormatTag :&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tag = &lt;span style="color: maroon;"&gt;"A-Law"&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: teal;"&gt;AudioCompressionManager&lt;/span&gt;.MuLawFormatTag :&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tag = &lt;span style="color: maroon;"&gt;"Mu-Law"&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: teal;"&gt;AudioCompressionManager&lt;/span&gt;.Gsm610FormatTag :&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tag = &lt;span style="color: maroon;"&gt;"GSM 6.10"&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: teal;"&gt;AudioCompressionManager&lt;/span&gt;.ImaAdpcmFormatTag :&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tag = &lt;span style="color: maroon;"&gt;"IMA ADPCM"&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: teal;"&gt;AudioCompressionManager&lt;/span&gt;.AdpcmFormatTag :&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tag = &lt;span style="color: maroon;"&gt;"Microsoft ADPCM"&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;case&lt;/span&gt; &lt;span style="color: teal;"&gt;AudioCompressionManager&lt;/span&gt;.MpegLayer3FormatTag :&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tag = &lt;span style="color: maroon;"&gt;"ISO/MPEG Layer3"&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;default&lt;/span&gt;:&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; tag = wf.wFormatTag.ToString();&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;break&lt;/span&gt;;&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: teal;"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: maroon;"&gt;"File '{0}' contains '{1}' data"&lt;/span&gt;, fileName, tag);&lt;/p&gt;&lt;p style="margin: 0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
</description><pubDate>Tue, 29 Dec 2009 08:00:00 GMT</pubDate></item><item><title>2009-11-04 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published.&lt;br&gt;
&lt;br&gt;New features:
&lt;ol type="square"&gt;
&lt;li&gt; Reads ID3 tag version 1 from MPEG Layer3 streams.
&lt;li&gt; Reads INFO metadata(similar mp3 tags) from Wave streams.
&lt;li&gt; Gets the format list for specified format tag and driver.
&lt;li&gt; Player class can plays Wave file data from array.
&lt;/ol&gt;
</description><pubDate>Wed, 4 Nov 2009 08:00:00 GMT</pubDate></item><item><title>2009-03-19 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published.&lt;br&gt;
&lt;br&gt;New features:

DsReader class for playback any audio files and decode theirs to PCM using DirectShow filters. Standard supports
&lt;ul&gt;
 &lt;li&gt; MP3 Format Sound: .mp3
 &lt;li&gt; Windows Media Audio: .wma
 &lt;li&gt; AIFF (.aif .aifc .aiff)
 &lt;li&gt; AU (.au .snd)
 &lt;li&gt; MIDI (.mid .midi .rmi)
 &lt;li&gt; Windows Media Video: .wmv
 &lt;li&gt; Advanced Systems Format: .asf
 &lt;li&gt; Motion Picture Experts Group: .mpeg
 &lt;li&gt; Audio-Video Interleaved: .avi
 &lt;li&gt; WAV: wav
&lt;/ul&gt;

Use &lt;a href=http://en.wikipedia.org/wiki/K-Lite_Codec_Pack&gt;http://en.wikipedia.org/wiki/K-Lite_Codec_Pack&lt;/a&gt; 
or &lt;a href=http://en.wikipedia.org/wiki/Ffdshow&gt;http://en.wikipedia.org/wiki/Ffdshow&lt;/a&gt; to expand the list of supported formats to

&lt;ul&gt;
 &lt;li&gt; Matroska (.mka)
 &lt;li&gt; MPEG (.mpa .mp2 .m1a .m2a)
 &lt;li&gt; MPEG4 (.m4a .aac)
 &lt;li&gt; Musepack (.mpc)
 &lt;li&gt; RealMedia (.rm .rmvb .ra .ram)
 &lt;li&gt; 3GP (.3gp .3gpp .3g2 .3gp2)
 &lt;li&gt; FLAC (.flac)
 &lt;li&gt; Ogg Vorbis (.ogg)
 &lt;li&gt; WavPack (.wv)
 &lt;li&gt; Monkey's Audio (.ape)
 &lt;li&gt; True Audio (.tta)
 &lt;li&gt; Apple Lossless Audio Codec (.alac)
 &lt;li&gt; AMR (.amr)
 &lt;li&gt; Trackers (.xm .s3m .it .mod .umx)
 &lt;li&gt; and much more...
&lt;/ul&gt;

</description><pubDate>Thu, 19 Mar 2009 07:00:00 GMT</pubDate></item><item><title>2009-03-04 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio for .Net code name "Helena" 65b1 beta has been released.&lt;br&gt;
&lt;br&gt;New features:

DsReader class for playback any audio files and decode theirs to PCM using DirectShow filters. Standard supports
&lt;ul&gt;
 &lt;li&gt; MP3 Format Sound: .mp3
 &lt;li&gt; Windows Media Audio: .wma
 &lt;li&gt; AIFF (.aif .aifc .aiff)
 &lt;li&gt; AU (.au .snd)
 &lt;li&gt; MIDI (.mid .midi .rmi)
 &lt;li&gt; Windows Media Video: .wmv
 &lt;li&gt; Advanced Systems Format: .asf
 &lt;li&gt; Motion Picture Experts Group: .mpeg
 &lt;li&gt; Audio-Video Interleaved: .avi
 &lt;li&gt; WAV: wav
&lt;/ul&gt;

Use &lt;a href=http://en.wikipedia.org/wiki/K-Lite_Codec_Pack&gt;http://en.wikipedia.org/wiki/K-Lite_Codec_Pack&lt;/a&gt; 
or &lt;a href=http://en.wikipedia.org/wiki/Ffdshow&gt;http://en.wikipedia.org/wiki/Ffdshow&lt;/a&gt; to expand the list of supported formats to

&lt;ul&gt;
 &lt;li&gt; Matroska (.mka)
 &lt;li&gt; MPEG (.mpa .mp2 .m1a .m2a)
 &lt;li&gt; MPEG4 (.m4a .aac)
 &lt;li&gt; Musepack (.mpc)
 &lt;li&gt; RealMedia (.rm .rmvb .ra .ram)
 &lt;li&gt; 3GP (.3gp .3gpp .3g2 .3gp2)
 &lt;li&gt; FLAC (.flac)
 &lt;li&gt; Ogg Vorbis (.ogg)
 &lt;li&gt; WavPack (.wv)
 &lt;li&gt; Monkey's Audio (.ape)
 &lt;li&gt; True Audio (.tta)
 &lt;li&gt; Apple Lossless Audio Codec (.alac)
 &lt;li&gt; AMR (.amr)
 &lt;li&gt; Trackers (.xm .s3m .it .mod .umx)
 &lt;li&gt; and much more...
&lt;/ul&gt;

Direct link: &lt;a href=http://alvas.net/Download/Alvas.Audio.65b1.zip&gt;http://alvas.net/Download/Alvas.Audio.65b1.zip&lt;/a&gt; 

</description><pubDate>Wed, 4 Mar 2009 08:00:00 GMT</pubDate></item><item><title>2009-02-03 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published.&lt;br&gt;
&lt;br&gt;New features:
&lt;ol type="square"&gt;
&lt;li&gt; RecordPlayer class for recording and playback.
&lt;li&gt; WaveReadWriter, Mp3ReadWriter, RawReadWriter and IAudioReadWriter classes to read/write data from/to the audio stream.
&lt;li&gt; MergeStereo methods for merging 2 audio mono into one stereo.
&lt;li&gt; Doesn't use unsafe code.
&lt;/ol&gt;
</description><pubDate>Tue, 3 Feb 2009 08:00:00 GMT</pubDate></item><item><title>2009-01-24 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Due to high demand Alvas.Audio lifetime license with free updates for all of the following releases appeared.&lt;br&gt;

For more details please see &lt;a href=alvas.audio,orders.aspx&gt;order page&lt;/a&gt;.
</description><pubDate>Sat, 24 Jan 2009 08:00:00 GMT</pubDate></item><item><title>2009-01-23 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio for .Net code name "Anna" 61b1 beta has been released.&lt;br&gt;
&lt;br&gt;New features:
&lt;ol type="square"&gt;
&lt;li&gt; Dictophone class with record/play, forward/backward possibility.
&lt;li&gt; AudioCompressionManager.MergeStereo methods for merges 2 mono streams to one stereo.
&lt;li&gt; Much more.
&lt;/ol&gt;

Direct link: &lt;a href=http://alvas.net/Download/Alvas.Audio.61b1.zip&gt;http://alvas.net/Download/Alvas.Audio.61b1.zip&lt;/a&gt; 
</description><pubDate>Fri, 23 Jan 2009 08:00:00 GMT</pubDate></item><item><title>2008-12-04 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published.&lt;br&gt;
&lt;br&gt;New features:
&lt;ol type="square"&gt;
&lt;li&gt; Added support for recording and playback in WAV format with 32 bits floating point format (WAVE_FORMAT_IEEE_FLOAT).
&lt;li&gt; Added support for recording and playback in WAV format with 24 and 32 bits PCM format with more than two channels.
&lt;li&gt; Can use PlayerEx and RecorderEx in the console applications and Windows Services.
&lt;/ol&gt;
</description><pubDate>Thu, 4 Dec 2008 08:00:00 GMT</pubDate></item><item><title>2008-12-02 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Enter coupon alvas-audio-2009 and get 35% discount on Alvas.Audio!
Valid till 1 January 2009.
</description><pubDate>Tue, 2 Dec 2008 08:00:00 GMT</pubDate></item><item><title>2008-07-12 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published.&lt;br&gt;
&lt;br&gt;New classes were added:
&lt;ol type="square"&gt;
&lt;li&gt; AcmConverter class converts audio data from one format to another.
&lt;li&gt; AudioReader/AudioWriter are base classes for stream audio readers/writers.
&lt;li&gt; Mp3Reader/Mp3Writer are classes for reading/writing audio data from/to MP3 streams.
&lt;li&gt; AviReader is a class for reading audio data from Avi streams.
&lt;li&gt; RawReader/RawWriter are classes for reading/writing audio data from/to headerless streams. Slinear, Gsm, A-law, mu-law etc.
&lt;/ol&gt;
</description><pubDate>Sat, 12 Jul 2008 07:00:00 GMT</pubDate></item><item><title>2008-03-31 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published.&lt;br&gt;
&lt;br&gt;New features:
&lt;ol type="square"&gt;
&lt;li&gt; Convert audio wave stream to mp3 stream
&lt;li&gt; Convert Dialogic .vox (adpcm) stream to Mp3 stream
&lt;li&gt; Insert and mix audio data into main audio data with specified offset multiple times
&lt;li&gt; Split stereo audio stream to two mono streams
&lt;li&gt; Reverse audio wave stream
&lt;li&gt; Create audio format for MPEG Layer3 audio data
&lt;li&gt; Sign library with &lt;a class=help href='http://en.wikipedia.org/wiki/Strong_name' target=_blank title='Strong name'&gt;&lt;strong&gt;strong name&lt;/strong&gt;&lt;/a&gt;. 
Now audio library can be added to &lt;a class=help href='http://en.wikipedia.org/wiki/Global_assembly_cache' target=_blank title='Global assembly cache'&gt;&lt;strong&gt;GAC&lt;/strong&gt;&lt;/a&gt;
&lt;/ol&gt;
</description><pubDate>Mon, 31 Mar 2008 07:00:00 GMT</pubDate></item><item><title>2007-12-01 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Enter coupon alvas-audio-2008 and get 25% discount on Alvas.Audio!
Valid till 31 December 2007.
</description><pubDate>Sat, 1 Dec 2007 08:00:00 GMT</pubDate></item><item><title>2007-11-26 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published.&lt;br&gt;
&lt;br&gt;New features:
&lt;ol type="square"&gt;
&lt;li&gt; Change the speed of audio data
&lt;li&gt; Join several pieces of audio in a single
&lt;li&gt; Cut a piece of the audio stream
&lt;li&gt; Insert a piece in the audio stream
&lt;li&gt; Remove a piece of the audio stream
&lt;li&gt; Create audio format from the byte array
&lt;/ol&gt;
</description><pubDate>Mon, 26 Nov 2007 08:00:00 GMT</pubDate></item><item><title>2007-06-06 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published.&lt;br&gt;
&lt;br&gt;New features:
&lt;ol type="square"&gt;
&lt;li&gt; &lt;strong&gt;encode and decode Dialogic .vox (adpcm) format data&lt;/strong&gt;;
&lt;li&gt; play, record and convert RAW headerless format (SLINEAR etc);
&lt;li&gt; change source line volume for recording;
&lt;li&gt; change different volume for stereo mixer line;
&lt;li&gt; change volume for PlayerEx.
&lt;/ol&gt;
</description><pubDate>Wed, 6 Jun 2007 07:00:00 GMT</pubDate></item><item><title>2007-01-18 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published.&lt;br&gt;
&lt;br&gt;New! &lt;strong&gt;Mixer controls set up:&lt;/strong&gt;
&lt;ol type="square"&gt;
&lt;li&gt; select source line for recording;
&lt;li&gt; change source line volume for recording;
&lt;li&gt; additional controls adjustment. For example, "Mic Boost";
&lt;li&gt; change master volume for playback;
&lt;li&gt; playback muting.
&lt;/ol&gt;
</description><pubDate>Thu, 18 Jan 2007 08:00:00 GMT</pubDate></item><item><title>2006-11-09 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published.&lt;br&gt;
Some new features were added:
&lt;ol type="square"&gt;
&lt;li&gt;Now PlayerEx can play mixed audio data. 
&lt;li&gt;PlayerEx can detect that playing process is complete.
&lt;/ol&gt;
Also some bugs were fixed.
</description><pubDate>Thu, 9 Nov 2006 08:00:00 GMT</pubDate></item><item><title>2006-10-09 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published.&lt;br&gt;
Some new features were added:
&lt;ol type="square"&gt;
&lt;li&gt;To get the format list for specified WaveFormat. 
&lt;li&gt;To get audio stream duration in milliseconds. 
&lt;li&gt;To change Wave stream to MP3 stream if Wave stream contains 'MPEG Layer 3' data 
&lt;li&gt;To show the dialog box that enables the user to select the waveform-audio format. 
&lt;li&gt;To get the WaveFormat for specified format handle. 
&lt;li&gt;To get the format for the conversion from the specified format and specified format tag. 
&lt;li&gt;To get the format list for the conversion from the specified format. 
&lt;/ol&gt;
</description><pubDate>Mon, 9 Oct 2006 07:00:00 GMT</pubDate></item><item><title>2006-09-18 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published.&lt;br&gt;
New Features
&lt;ol type="square"&gt;
&lt;li&gt;Record audio data:
&lt;ol type="disc"&gt;
&lt;li&gt; pause and resume recording;
&lt;li&gt; get the current sound position;
&lt;/ol&gt;
&lt;li&gt;Play audio data:
&lt;ol type="disc"&gt;
&lt;li&gt; play uncompressed audio data (PCM);
&lt;li&gt; play compressed audio data: IMA ADPCM, Microsoft ADPCM, CCITT A-Law, CCITT u-Law, GSM 6.10, MPEG Layer-3 (mp3) and others;
&lt;li&gt; play data from the stream (file stream, memory stream);
&lt;li&gt; pause and resume playing;
&lt;li&gt; get the current sound position;
&lt;li&gt; play data from any player installed in the system (multiple sound cards).
&lt;/ol&gt;
&lt;li&gt;Convert the audio data from one to another audio format.
&lt;li&gt;View the level of the input sound signal.
&lt;/ol&gt;
</description><pubDate>Mon, 18 Sep 2006 07:00:00 GMT</pubDate></item><item><title>2006-01-07 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version allow sound recording in PCM, IMA ADPCM, Microsoft ADPCM, CCITT A-Law, CCITT u-Law, GSM 6.10, MPEG Layer-3 (mp3) and other wave file format.
</description><pubDate>Sat, 7 Jan 2006 08:00:00 GMT</pubDate></item><item><title>2005-03-27 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Audio new version has been published. Some bug-fixes and improvements.
</description><pubDate>Sun, 27 Mar 2005 07:00:00 GMT</pubDate></item><item><title>2004-04-04 - Alvas.Audio</title><link>http://www.alvas.net/alvas.audio.aspx</link><description>
Alvas.Net is happy to announce a new product for .Net:&lt;BR&gt;
&lt;strong&gt;Alvas.Audio&lt;/strong&gt; - components collection that allows Your applications 
to play and record sound. 
</description><pubDate>Sun, 4 Apr 2004 07:00:00 GMT</pubDate></item></channel></rss>